メモ

yukicoderでゆるふわgolf

yukicoder No.538 N.G.S.

問題はこちら
No.538 N.G.S. - yukicoder

数学するだけ

連立方程式
b_2=rb_1+d\\b_3=rb_2+d
を解き
r=\frac{b_3-b_2}{b_2-b_1},\ d=\frac{b_2^2-b_1 b_3}{b_2-b_1}
を得る。求める答えはrb_3+dであるからこれに代入して
\frac{b_3^2-b_2 b_3+b_2^2-b_1 b_3}{b_2-b_1}
となる。
b_iは最大10^5なので2乗すると32bitの範囲に収まらないことに注意する

long a,b,c;
main(){
	scanf("%ld%ld%ld",&a,&b,&c);
	printf("%ld",(c*c+b*b-b*c-a*c)/(b-a));
}

式をぐっと睨むと(c*c+b*b-b*c-a*c)/(b-a)をc+(b-c)*(b-c)/(b-a)と書き換えられることがわかる(自力では気づけず)

long b,c;
main(a){
	scanf("%d%ld%ld",&a,&b,&c);
	printf("%ld",c+(b-c)*(b-c)/(b-a));
}

79B