RedLycoris @ 2020-05-16 21:45:19
题目很有趣
大家有什么做法吗/kel
by gyh20 @ 2020-05-16 21:45:56
乱搞
by gyh20 @ 2020-05-16 21:46:12
然后答案乘二
by RedLycoris @ 2020-05-16 21:46:41
@天下我有 不是输出max(ans+7,ans*2)吗
by RedLycoris @ 2020-05-16 21:46:58
我的代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline void ask(ll x){
cout<<"? "<<x<<'\n';
fflush(stdout);
}
ll ans;
inline void T(ll x){
ll ee=1000000000000000000;
ll R=x,cnt=0;
for(;R<=ee/x;R*=x);
ask(R);
ll F;cin>>F;
for(;F!=1;F/=x,++cnt);
ans*=(cnt+1);
}
bool isp[1005];
vector<int>pms;
vector<int>hv;
inline void solve(){hv.clear();ans=1;
int j=0;ll ee=1000000000000000000;
for(int i=1;i<=8;++i){
ll cur=1;int lj=j;
for(;cur<=ee/pms[j];cur*=pms[j],++j);
ask(cur);ll tf;cin>>tf;
for(int f=lj;f<j;++f)if(tf%pms[f]==0)hv.push_back(pms[f]);
}
for(int i=0;i<hv.size();++i){
T(hv[i]);
}
cout<<"! "<<max(ans*2,ans+7)<<'\n';
fflush(stdout);
}
int main(){
for(int i=2;i<=1000;++i){
if(!isp[i]){
pms.push_back(i);
for(int j=i*2;j<=1000;j+=i)isp[j]=1;
}
}
int T;cin>>T;
for(;T--;)solve();
}
by 山田リョウ @ 2020-05-16 21:48:05
%%%
by gyh20 @ 2020-05-16 21:48:18
@zrmpaul 差在7以内都行吧
by ix35 @ 2020-05-16 21:49:50
@zrmpaul
没有正确性保证的做法?
by RedLycoris @ 2020-05-16 21:52:17
@天下我有 4个大质数相乘时你会出问题吧
by gyh20 @ 2020-05-16 21:52:39
@zrmpaul 多大?
by gyh20 @ 2020-05-16 21:52:58
给个例子?