問題はこちら
No.396 クラス替え - yukicoder
折り返しまで込めて周期は2M
以下、手順2を「行き」、手順3を「帰り」と呼ぶことにする。
・2人が共に「行き」または共に「帰り」で同じクラスに割り振られることと X≡Y mod 2M は同値
・1回目の「行き」と1回目の「帰り」で同じクラスに割り振られることと X+Y=2M+1 は同値
よって2人がそれぞれ「行き」と「帰り」で同じクラスに割り振られることと X+Y≡1 mod 2M は同値
以上より
int main(){ int m,x,y; scanf("%*d%d%d%d",&m,&x,&y); puts((x-y)%(2*m)==0||(x+y)%(2*m)==1?"YES":"NO"); return 0; }
ぎゅっとして
a,b;main(k){a=scanf("%*d%d%d%d",&k,&a,&b)>puts((a-b)%(k*=2)&&(a+b-1)%k?"NO":"YES");}
84B