頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

AGC024 A - Fairness

問題はこちら atcoder.jp

方針

10^{18} 回ループを回せば良いのですが,10^{9} 秒(\approx 31.7 年)かかってしまいます。

対称性があるので綺麗に消えそうだなと思いつつ,与 A,B,C をそれぞれ A_0,B_0,C_0i 回の操作後の A,B,CA_i,B_i,C_i として式をいじっていると,

※4行目の添字K-1はK-2の間違いです。

すごいですね。A_K-B_KC に全く関係ないようです。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    long long a,b,c,k;
    cin>>a>>b>>c>>k;
 
    cout<<(k%2==0 ? a-b : b-a)<<endl;
}

補足

ACを通してから,

ただし、答えの絶対値が 10^{18} を超える場合は、代わりに 'Unfair' と出力してください。

という指示を忘れていたことに気づきましたが,1 \leq A \leq 10^{9},1 \leq B \leq 10^{9} より,答えの絶対値が 10^{18} を超えることはありません。