問題はこちら
No.341 沈黙の期間 - yukicoder
まず「……」とだけ書いたテキストをUTF-8で保存してバイナリエディタで開くと
00000000: EF BB BF E2 80 A6 E2 80 A6
となった。多分「E2 80 A6」が「…」なんだろうけどじゃあ「EF BB BF」ってなんだよとググったらBOMと呼ばれるもので、今回はついてないとされてるやつのようだ。
gccのcharは何もしないとsignedになるらしいので次のように書ける
int main(){ char s[999]; int i,n=0,m=0; gets(s); for(i=0;s[i];i++){ if(s[i]==-30&&s[i+1]==-128&&s[i+2]==-90){ n++; i+=2; //次は3つ先を見るので、iが合計で3増えるように、ここで+2しておく if(m<n)m=n; //最大値の更新 } else n=0; //現在値のリセット } printf("%d",m); return 0; }
ぎゅっと縮めて配列の大きさを省略
char s[]; i,n,m; main(){ for(gets(s);s[i];)s[i+2]+90|s[i+1]+128|s[i++]+30?n=0:(i+=2,m<++n?m=n:0); i=!printf("%d",m); }
113B