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

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注