ARC026に参加。
Cまでは順調に解いたものの、Dが部分点しか取れず微妙な順位に。
http://arc026.contest.atcoder.jp/tasks/arc026_1
http://arc026.contest.atcoder.jp/tasks/arc026_2
A - ダイナミックなポーズ
1問問題を解くのにA分かかる。
ただし最大5問までは1問B分(B
int N,A,B; void solve() { int f,i,j,k,l,x,y; cin>>N>>A>>B; x=min(N,5); cout << x*B+(N-x)*A << endl; }
B - 完全数
整数Nが完全数・過剰数・不足数のいずれか答えよ。
O(√N)で約数を列挙すればよい。
ll N; void solve() { int f,i,j,k,l,x,y; ll ret=1; cin>>N; ll xx; for(xx=2;xx*xx<=N;xx++) { if(N%xx==0) { if(xx*xx==N) ret += xx; else ret += xx+N/xx; } } if(N==1) return _P("Deficient\n"); if(ret==N) _P("Perfect\n"); else if(ret<N) _P("Deficient\n"); else _P("Abundant\n"); }
まとめ
ここまではすんなり。