結果
| 問題 |
No.8093 Please GCD
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-04-03 19:37:23 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 807 bytes |
| コンパイル時間 | 2,055 ms |
| コンパイル使用メモリ | 173,264 KB |
| 実行使用メモリ | 25,476 KB |
| 平均クエリ数 | 356.43 |
| 最終ジャッジ日時 | 2024-11-24 01:46:07 |
| 合計ジャッジ時間 | 6,059 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 WA * 5 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin>>N;
vector<int>prime(N+1,1);
vector<int>ask1,ask2;
for(int i=2;i<=N;i++){
if(prime[i]==0)continue;
int t=i;
while(t*i<=N)t*=i;
if(t!=i)ask1.push_back(t);
else ask2.push_back(t);
for(int j=i*i;j<=N;j+=i){
prime[j]=0;
}
}
long long ans=1;
int cnt=0;
for(int i=0,t;i<min(600,(int)ask1.size());i++,cnt++){
cout<<"? "<<ask1[i]<<endl;
cin>>t;
ans*=t;
}
random_device sd;
mt19937 rd(sd());
while(ask2.size()&&ans*ask2.back()>N)ask2.pop_back();
shuffle(ask2.begin(),ask2.end(),rd);
for(int i=0,t;i<min(600-cnt,(int)ask2.size());i++){
cout<<"? "<<ask2[i]<<endl;
cin>>t;
ans*=t;
}
cout<<"! "<<ans<<'\n';
}