2008-12-26
SRM390 Div1 Easy: ConcatenateNumber
余裕・・・と思ってたら循環するのを忘れててシステムテストエラー
class ConcatenateNumber { public: int getSmallest(int number, int k) { long long f=1, k_=k; for(int n=number;n>0;n/=10) f*=10; f%=k; long long n_=number%k, rem=n_; if(rem==0) return 1; set<int> rep; rep.insert(rem); // 循環検出用。bool[k]でいいんですけど int cnt=1; while(1){ cnt++; long long new_rem = ((rem*f) + n_)%k_; if(found(rep,new_rem)) return -1; // if(new_rem==rem) return -1; // これだけだと駄目 if(new_rem==0) return cnt; rep.insert(new_rem); rem=new_rem; } } };