読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.257 N言っちゃダメゲーム (3)

問題はこちら
No.257 N言っちゃダメゲーム (3) - yukicoder

先手後手の選択は次のように読み替えられる
「あなたは先手であり、最初の1手に限り0が認められる」
ということで、以前やったとおり(N-1)%(K+1)を初手で言い、後はK+1ずつ増やした値を言っていけば良い
(つまり相手が何を言ったかは関係ない)

int main(){
	int n,k,t,now;
	scanf("%d%d",&n,&k);
	now=(n-1)%(k+1);
	do{
		printf("%d\n",now);
		fflush(0);
		scanf("%d",&t);
		now+=k+1;
	}while(t<n);
	return 0;
}

相手が何言ったか関係ないなら、scanfいらなくない?

s,k;main(n){for(scanf("%d%d",&n,&k);s-6;fflush(!printf("%d\n",~-n%~k-~k*s++)));}

80B
…ところがこれだとWAが混じる。再提出すると同じケースでもACだったりWAだったりしてよくわからない

しかたがないのでちゃんと終了条件を見ることにする

t,s,k;main(n){for(scanf("%d%d",&n,&k);t<n;scanf("%d",&t))fflush(!printf("%d\n",~-n%~k-~k*s++));}

96B