首页 > 代码库 > Topcoder SRM 619 DIv2 500 --又是耻辱的一题
Topcoder SRM 619 DIv2 500 --又是耻辱的一题
这题明明是一个简单的类似约瑟夫环的问题,但是由于细节问题迟迟不能得到正确结果,结果比赛完几分钟才改对。。耻辱。
代码:
#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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。