ARC#034は不参加。出てもDが部分点どまりだったろうな…。
http://arc034.contest.atcoder.jp/tasks/arc034_1
http://arc034.contest.atcoder.jp/tasks/arc034_2
A - 首席
N人の受験生がそれぞれ5科目の試験を受けた。
各受験生の得点は、最初の4科目の得点と5科目の得点に110/900を掛けたものの和である。
N人のうち最高得点は何点か。
愚直に計算して最高点を求めればよい。
なんか東大の2次試験の配点みたい。
double ret; int N,A[5]; void solve() { int i,j,k,l,r,x,y; string s; cin>>N; FOR(i,N) { cin>>A[0]>>A[1]>>A[2]>>A[3]>>A[4]; ret=max(ret,A[0]+A[1]+A[2]+A[3]+A[4]*11/90.0); } _P("%.12lf\n",ret); }
B - 方程式
正整数nの各桁の和をf(n)とする。
Nが与えられるので、X+f(X)=NとなるXを列挙せよ。
nは10^18以下なので、f(n)は最大でも162。
よってN-172≦X≦NとなるXに対し、X+f(X)を求めてみればよい。
ll N; vector<ll> V; int dig(ll X) { int ret=0; while(X) ret+=X%10, X/=10; return ret; } void solve() { int i,j,k,l,r,x,y; string s; cin>>N; for(ll X=max(1LL,N-900);X<=N;X++) { if(X+dig(X)==N) V.push_back(X); } _P("%d\n",V.size()); ITR(it,V) _P("%lld\n",*it); }
まとめ
ここまではABCと大差ない難易度。
特にBがいつもよりも易しい。