結果

問題 No.3501 Digit Products 2
コンテスト
ユーザー altvision
提出日時 2026-04-19 13:33:17
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 2,203 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,394 ms
コンパイル使用メモリ 331,192 KB
実行使用メモリ 30,320 KB
平均クエリ数 5.82
最終ジャッジ日時 2026-04-19 13:33:51
合計ジャッジ時間 19,929 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 1
other AC * 10 WA * 23 RE * 39
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<string> vs;

// マクロ
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rep2(i, a, n) for (int i = (a); i < (int)(n); i++)
#define rrep(i, n) for (int i = (int)(n) - 1; i >= 0; i--)
#define each(x, v) for (auto &x : v)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define sz(x) ((int)(x).size())
#define pb(x) push_back(x)
#define mp(x, y) make_pair(x, y)

const int INF = 1e9;
const ll LINF = 1e18;
const int MOD = 998244353;

const int MAX_SIZE = 9000000;

int mySqrt(int x){
    for(int i = 0; i < 10; i++){
        if(x == i * i){
            return i;
        }
    }
    return -1;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    if(n == 2){
        cout << "? " << 0 << " " << 1 << endl;
        int special;
        cin >> special;
        cout << "? " << 1 << " " << 0 << endl;
        if(special == 49){
            cout << "! 77" << endl;
        } else if(special == 64){
            cout << "! 88" << endl;
        } else if(special == 81){
            cout << "! 99" << endl;
        } else {
            cout << "! -1" << endl;
        }
        return 0;
    }
    int x[n];
    cout << "? " << 0 << " " << 1 << endl;
    int x01;
    cin >> x01;
    cout << "? " << 1 << " " << 2 << endl;
    int x12;
    cin >> x12;
    cout << "? " << 0 << " " << 2 << endl;
    int x02;
    cin >> x02;
    // cout << "x01: " << x01 << endl;
    // cout << "x12: " << x12 << endl;
    // cout << "x02: " << x02 << endl;

    x[0] = mySqrt(x01 * x02 / x12);
    // cout << "x[0]: " << x[0] << endl;
    x[1] = mySqrt(x01 * x12 / x02);
    // cout << "x[1]: " << x[1] << endl;
    x[2] = mySqrt(x02 * x12 / x01);
    // cout << "x[2]: " << x[2] << endl;
    for(int i = 3; i < n; i++){
        cout << "? " << 0 << " " << i << endl;
        int x0i;
        cin >> x0i;
        x[i] = x0i / x[0];
    }
    cout << "! ";
    for(int i = 0; i < n; i++){
        cout << x[i];
    }
    cout << endl;

    return 0;
}
0