ABC088C Takahashi`s information
もう一個
int main() { cout <<setprecision(10); int c[3][3]; rep(i,3){ rep(j,3){ cin >>c[i][j]; } } rep(i,2){ rep(j,2){ if(c[i][j] - c[i+1][j] != c[i][j+1] - c[i+1][j+1]){ cout << "No" << endl; return 0; } } } rep(j,2){ rep(i,2){ if(c[i][j] - c[i+1][j] != c[i][j+1] - c[i+1][j+1]){ cout << "No" << endl; return 0; } } } coY(); }
解法
画像をご覧ください
a1 + b1 = c1,1
a1 + b2 = c1,2
a1 + b3 = c1.3
a2 + b1 = c2,1
a2 + b2 = c2,2
a2 + b3 = c2,3
a3 + b1 = c3,1
a3 + b2 = c3,2
a3 + b3 = c3,3
ですね(そうですね)
1 - 2 = b1 - b2 = c1,1 - c1,2
4 - 5 = b1 - b2 = c2,1 - c2,2
みたいな感じなので
c1,1 - c1,2 = c2,1 - c2,2
で一致しなきゃいけなっていうのは分かるんですけど、
どこまでが一致してればいいか分からないですね
例えばさっき貼ったコードは
↓ ↓ ↓
↓ ↓ ↓
って感じで一致しているか見て
そのあと
→→
→→
→→
って感じで見るってやってたんですけど
提出2のコード
int main() { cout <<setprecision(10); int c[3][3]; rep(i,3){ rep(j,3){ cin >>c[i][j]; } } rep(i,2){ rep(j,2){ if(c[i][j] - c[i+1][j] != c[i][j+1] - c[i+1][j+1]){ cout << "No" << endl; return 0; } } } coY(); }
こっちは
↓↓↓
↓↓↓
って感じでやってます。これでもACみたいなんですよね。
どうやったらいいのか証明ほしいですね(解説読んでないのであとで読みます)
後日談 (解説動画を見た) なるほどa1を決めたら他の a1,a2,a3 b1 b2 b3 が全部決まるから、決めたときに条件通りになっているかを見ればいいのか うむ