最后两个点WA求调
查看原帖
最后两个点WA求调
733408
Cama38_64楼主2024/10/2 20:13

由于(4×108)2>1017(4\times 10^8)^2>10^{17},所以想到了这样的方法,思路大致就是:
得到mmodxm \bmod xmmod(x+1)m \bmod (x+1)的值,通过比较它们俩之间的差直接计算出m的值。

下面是本蒟蒻提交的代码(#15,16 WA),希望各位大佬能指点……

#include <bits/stdc++.h>
using namespace std;

int T;
long long n1 = 39999999, n2 = 40000000, m1, m2, C;

int main() {
    cin >> T;
    for (int i = 1; i <= T; i++) {
        cout << "? " << n1 << endl;
        cin >> m1;
        if (m1 == -1)return 0;
        cout << "? " << n2 << endl;
        cin >> m2;
        if (m2 == -1)return 0;
        if (m1 < m2) C = m1+n1-m2;
        else C = m1-m2;
        cout << "! " << (C*n2+m2)%(n1*n2) << endl;
    }
    return 0;
}

此外,之前联想到过中国剩余定理,可惜了解不深,也不会写。

2024/10/2 20:13
加载中...