はまやんはまやんはまやん

hamayanhamayan's blog

N.G.S. [yukicoder No.538]

https://yukicoder.me/problems/no/538

解法

https://yukicoder.me/submissions/185283

まず代入してみる。
 
B3 = rB2 + d
B2 = rB1 + d
 
連立方程式でr,dを求めると
 
r = (B3 - B2) / (B2 - B1)
d = (B2^2 - B1 * B3) / (B2 - B1)
 
ここから次の項を求める

B4 = rB3 + d
= (B3^2 - B2*B3 + B2^2 - B1*B3) / (B2 - B1)
 
オーバーフロー対策にlong longを使ってやると通る。

typedef long long ll;
ll B1, B2, B3;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> B1 >> B2 >> B3;

    ll B4 = (B3 * B3 - B2 * B3 + B2 * B2 - B1 * B3) / (B2 - B1);
    cout << B4 << endl;
}