何か昨年より面白くなかったな…。
http://codeforces.com/contest/784
C,Dは自力で解けなかったのでコメント参照。
A. Numbers Joke
入力値aに対し整数を答えよ。
OEISでjokeを検索すると以下の数列が引っかかるので、これを答える。
A006753 - OEIS
int X; int AA[]={4, 22, 27, 58, 85, 94, 121, 166, 202, 265, 274, 319, 346, 355, 378, 382, 391, 438, 454, 483, 517, 526, 535, 562, 576, 588, 627, 634, 636, 645, 648, 654, 663, 666, 690, 706, 728, 729, 762, 778, 825, 852, 861, 895, 913, 915, 922, 958, 985, 1086, 1111, 1165}; void solve() { int i,j,k,l,r,x,y; string s; cin>>X; cout<<AA[X-1]<<endl; }
B. Kids' Riddle
プログラマの子供なが5~10分で解ける問題である、
入力値nに対し整数を答えよ。
入力値を16進数にし、穴の数を答える。元ネタは以下か。
幼児が数分で解けるのに大人が解けない算数(?)の問題が話題に - NAVER まとめ
int N; char buf[101]; void solve() { int i,j,k,l,r,x,y; string s; cin>>N; sprintf(buf,"%X",N); int ret=0; FOR(i,10) { if(buf[i]=='0') ret++; if(buf[i]=='4') ret++; if(buf[i]=='6') ret++; if(buf[i]=='8') ret+=2; if(buf[i]=='9') ret++; if(buf[i]=='A') ret+=1; if(buf[i]=='B') ret+=2; if(buf[i]=='D') ret+=1; } cout<<ret<<endl; }
C. INTERCALC
問題文が謎の文章である。
整数列が与えられるので、整数を答えよ。
INTERCALCという言語の処理系に通すと、各行エラーが発生するのでその単語を集める。
すると「配列の最大値と末尾の値のxorを取れ」という文章ができるようだ。
int N; int A[101]; void solve() { int i,j,k,l,r,x,y; string s; cin>>N; FOR(i,N) cin>>A[i]; cout<<(*max_element(A,A+N)^A[N-1])<<endl; }
D. Touchy-Feely Palindromes
ある整数が与えられる。YESかNOを答えよ。
整数を点字列とみなし、回文判定する。
int N; string S; int T[10]={8,-1,-1,3,6,9,4,7,0,5}; void solve() { int i,j,k,l,r,x,y; string s; cin>>S; N=S.size(); FOR(i,N) S[i]-='0'; FOR(i,N) if(S[N-1-i]!=T[S[i]]) return _P("NO\n"); _P("YES\n"); }
E. Twisted Circuit
論理回路と4つの値が与えられる。0か1を出力せよ。
論理回路のorとxorを入れ替えて、回路を通した値を答える。
int A[4]; int B[4]; int C[2]; void solve() { int i,j,k,l,r,x,y; string s; FOR(i,4) cin>>A[i]; B[0] = A[0] ^ A[1]; B[1] = A[2] | A[3]; B[2] = A[1] & A[2]; B[3] = A[0] ^ A[3]; C[0] = B[0] & B[1]; C[1] = B[2] | B[3]; cout<<(C[0]^C[1])<<endl; }
F. Crunching Numbers Just for You
整数列が与えられる。頑張って昇順に並び替えよ。
1秒以上かけてソートする。
int N; int A[101]; void solve() { int i,j,k,l,r,x,y; string s; int B=0; clock_t S,E; cin>>N; FOR(i,N) cin>>A[i]; sort(A,A+N); FOR(i,N) _P("%d%c",A[i],(i==N-1)?'\n':' '); S = clock(); while(clock()-S < CLOCKS_PER_SEC*1.3); }
G. BF Calculator
数式が与えられるので、その出力を返すBrainfuckのプログラムを返せ。
式の計算自体はevalを使える言語で行ってしまおう。あとは計算後の値を出力するコードを吐けばよい。
S=raw_input() T=str(eval(S)) R="" for c in T: for a in range(int(c)+48): R+="+" R+=".>" print R
まとめ
yukicoderの方が面白かったな…。