AOJ 0017と0027が通らない
[誤答例]AOJ 0017 Caesar Chipher
#include <cstdio> #include <cstring> inline int cmp(char *ha, const char *ne, int len){ for(int i = -128, f = 1; i <= 127; i++, f = 1){ for(int j = 0; j < len; j++) if(ha[j]+i != ne[j]) f = 0; if(f) return i; } return 0; } int main(){ char l[81]; while(fgets(l, 81, stdin)){ int o = 0, len = strlen(l); for(int i = 0; i < len; i++){ if(len - i >= 3) if(o = cmp(l + i, "the", 3)) break; if(len - i >= 4){ if(o = cmp(l + i, "this", 4)) break; if(o = cmp(l + i, "that", 4)) break; } for(int j = i; l[j] != ' ' && l[j] != '.' && j < len; i = ++j); } for(int i = 0; i < len - 1; i++) if(l[i] == ' ' || l[i] == '.') putchar(l[i]); else putchar(l[i] + o); puts(""); } return 0; }
最初はよく分からない原因でSubmit Toolで試せるサンプルケースすら通らなかった。バイナリレベルで見たらゴミデータがついていたので彼んい に長さから1を引いた。やっぱりAcceptされなかった。なんでだろう…
[誤答例]AOJ 0027 What day is today?
main(m,q){char *l[]={"Satur","Sun","Mon","Tues","Wednes","Thurs","Fri"};for(;scanf("%d%d",&m,&q)+1?m:0;printf("%sday\n",l[(q+(m<3?13+m:1+m)*13/5-(m<3?32:30))%7]));exit(0);}
多分式か何かが間違ってるのだと思うが、そもそもサンプルケースが特殊例2つというので、自分で新たにテストケース作ってデバッグするのもたるくて断念。