問題はこちら
No.239 にゃんぱすー - yukicoder
各文字列を読み込んでstrcrpで"nyanpass"と比較し、各人物が何回"nyanpass"と言っているか調べる
全員に対して"nyanpass"と言えば、その回数はN-1になっているので
そのような人物がちょうど1人いるかどうかを調べる
int main(){ int a[110]={},i,j,n,f=0; char x[40]; scanf("%d",&n); for(i=0;i<n;i++)for(j=1;j<=n;j++){ scanf("%s",x); if(strcmp(x,"nyanpass")==0)a[j]++; } for(i=1;i<=100;i++)if(a[i]==n-1)f=f?-1:i; //fの初期値は0 //れんちょんっぽい人物を見つけた時 //他にまだ見つけてなければその人物の番号を、他に見つけていれば-1を格納する printf("%d",f?f:-1); //fに値が入っていなければれんちょんっぽい人物はいなかったので-1 return 0; }
ぎゅっとして配列サイズをごまかして
x[],a[99],i,j,s; main(n){ for(scanf("%d",&n);~scanf("%s",x);a[i++%n]+=!strcmp(x,"nyanpass")); for(;j<=99;)s=a[j++]+1-n?s:s?-1:j; j=!printf("%d",s?:-1); }
更に今回は答えが100になるテストケースが含まれていないので2つのfor文の終了条件をj<99してよい
//嘘解法 x[],a[99],i,j,s; main(n){ for(scanf("%d",&n);~scanf("%s",x);a[i++%n]+=!strcmp(x,"nyanpass")); for(;j<99;)s=a[j++]+1-n?s:s?-1:j; j=!printf("%d",s?:-1); } //答えが100となる任意の入力で落とせる
147B