寝過ごした〜orz
non rated
ParingPaws
やるだけ
class PairingPawns { public: int savedPawnCount( vector <int> start ) { for (int i=start.size()-1; i>0; i--) { while (start[i]>=2) { start[i]-=2; start[i-1]++; } } return start[0]; } };
KingSort
ローマ数字+めんどいイテレーター←一例
class KingSort { public: int conv(string num) { int res=0; for (int i=0; i<num.length(); i++) { if (num[i]=='I') res++; else if (i&&num[i-1]=='I'&&num[i]=='V') res+=3; else if (num[i]=='V') res+=5; else if (i&&num[i-1]=='I'&&num[i]=='X') res+=8; else if (num[i]=='X') res+=10; else if (i&&num[i-1]=='X'&&num[i]=='L') res+=30; else if (num[i]=='L') res+=50; } return res; } vector <string> getSortedList( vector <string> kings ) { // I, II, III, IV, V, VI, VII, VIII, IX, X // XX, XXX, XL, L sort(kings.begin(), kings.end()); mp ks; for (int i=0; i<kings.size(); i++) { string name="", num=""; int j; for (j=0; j<kings[i].length(); j++) { if (kings[i][j]==' ') break; name += kings[i][j]; } for (j+=1; j<kings[i].length(); j++) { num += kings[i][j]; } ks[name].push_back(make_pair(conv(num), num)); } vector<string> res; for (mp::iterator it=ks.begin(); it!=ks.end(); it++) { sort((*it).second.begin(), (*it).second.end()); for (int i=0; i<(*it).second.size(); i++) { string r=""; r+=(*it).first; r+=" "; r+=(*it).second[i].second; res.push_back(r); } } return res; } };
AOJ0039の実装量とくらべれば・・・
MinskyMysteryDiv2
要するに10^12以下の正整数Nを一番最初に割り切れる数字をxとしたとき、N/x+xを返せという事。
なんか長ったらしい擬似コードあるけどようするにそういうことです。
で、まぁ素数は別として高々10^6までの素数で割ってけば充分だからそうしました。-1は1以下のときに(割るのが2から始まるので。)
class MinskyMysteryDiv2 { public: long long computeAnswer( long long N ) { if (N<2) return -1; ll isprime[1000001]; vector<ll> prime; fill(isprime, isprime+1000001, 1); isprime[0]=isprime[1]=0; for (int i=2; i<1000001; i++) { if (isprime[i]) { prime.push_back(i); for (int j=i*2; j<1000001; j+=i) isprime[j]=0; } } for (int i=0; i<prime.size(); i++) { if (N%prime[i]==0) { return N/prime[i]+prime[i]; } } return N+1; } };
最後は気づくの遅かったんでわかりませんが、全完ありえましたね・・・
なのに寝過ごす・・・なんでこういう時に限って・・・・
プラクティス公開直後プラクティスルーム単独一位w