AOJ 0169 ブラックジャック
404 Not Found クソ有り難い入力問題。s+=" ";は番兵。
#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int main(){ string s,t; int sum,ones; while(getline(cin,s)&& s != "0"){ s+=" "; sum = ones = 0; for(int i=0;i<s.size();i++){ if(s[i]==' '){ if(atoi(t.c_str())==1){ ones++; }else{ if(atoi(t.c_str())<10) sum+=atoi(t.c_str()); else sum+=10; } t.clear(); }else{ t+=s[i]; } } sum+=ones*11; for(;ones--&&sum>21;) sum-=10; printf("%d\n",sum>21?0:sum); } }
ショートコーディング後は299Byteだった。300Byte切ることを目標にクソ適当に縮めたので載せない。
8/4 適当にショートコーディングした
C 135Byte 絶対もっと縮まる。特に{}とか
c,s,o;main(d){ for(;scanf("%d%c",&d,&c),d;){ d-1?s+=d>9?10:d:o++; if(c<11){ for(s+=o*11;o--&&s>21;)s-=10; printf("%d\n",s>21?0:s); s=o=0; } } }
AOJ 0201 錬金マスター
パソコン甲子園2009予選の問題。一発書きでほぼ完成だったのは嬉しい。
レシピで作った時の値段 > 素材の値段のケース忘れてて1回WrongAnswer出した。テストケースに無いのは恐いね。
#include <map> #include <iostream> #include <vector> using namespace std; map<string,int> item; map<string,vector<string> > rec; int saiki(string str){ int ret = 0; if(rec[str].size()){ for(int i=0;i<rec[str].size();i++){ ret += saiki(rec[str][i]); } }else{ ret=item[str]; } if(item[str]&&item[str]<ret)ret=item[str]; return ret; } int main(){ int n,m,t; string s,rs; while(cin >> n && n){ item.clear(); rec.clear(); for(int i=0;i<n;i++){ cin >> s; cin >> item[s]; } cin >> m; for(int i=0;i<m;i++){ cin >> rs >> t; for(int j=0;j<t;j++){ cin >> s; rec[rs].push_back(s); } } cin >> s; cout << saiki(s) << endl; } }
AOJ 0512 シーザー暗号
3問くらいショートコーディングしたら全部WrongAnswerした。原因はわかったのだけど理由が分からない。不可解すぎる。scanfの仕様が未知。
ということで、404 Not Foundをショートコーディング
69Byte
main(t){for(;~(t=getchar());)putchar(t-10?65+(t-42)%26:10);exit(0);}