Topcoder SRM 619 DIv2 500 –又是屈辱的一题。这篇文章就说了一个“问题”!

马上题判是一个简便的类约瑟夫环的题目,但是出于细节问题迟迟不能够获正确结果,结果比完几分钟才转移对。。耻辱。

图片 1

代码:

关于问题之题目 生命连,问题不断。 解决问题是一流问题。 有的题材无是题材, 有的题目无法化解, 有的问题化解以后一律劳永逸, 有的题材解决后带来新的题目。 你的工具是个锤子, 看到问题即使钉子。 解决本质问题, 避开无解问题, 你所观看的问题, 或许不是问题, 你拟缓解问题, 自己我就是是单问题。 盯在问题,问题无见面磨灭, 理解问题,问题才会知晓你! 所有题目,都是题材; 所有问题,都非是题材! 问题在自我这边, 问题在公那边。 生命不止,问题不断!

图片 2图片 3

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define ll long long
using namespace std;
#define NN 370000

class ChooseTheBestOne
{
private:
public:
    ll calc3(int n)
    {
        return (ll)pow(n,3);
    }
    int countNumber(int N)
    {
        ll now = 1,remain = (ll)(N-1);
        ll rd = 2;
        ll pos;
        int has[5005];
        memset(has,-1,sizeof(has));
        has[0] = 0;
        while(rd < N)
        {
            while(has[now] == 0)
            {
                now = (now+1)%N;
            }
            ll call = calc3(rd);
            ll add = (call-1)%remain;
            ll k = 0;
            for(pos=now;k<add;)
            {
                pos = (pos+1)%N;
                if(has[pos] != 0)
                    k++;
            }
            has[pos] = 0;
            now = (pos+1)%N;
            //cout<<"出去: "<<pos+1<<"   现在"<<now+1<<endl;
            remain--;
            rd++;

        }
        ll i;
        for(i=0;i<N;i++)
        {
            if(has[i] == -1)
            {
                return i+1;
            }
        }
    }
};

int main()
{
    ChooseTheBestOne *kc = new ChooseTheBestOne();
    cout<<(*kc).countNumber(1234)<<endl;
    return 0;
}

View Code

 

相关文章