月赛B1求助
  • 板块题目总版
  • 楼主Tiskan_H
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/2 18:43
  • 上次更新2024/10/2 20:27:16
查看原帖
月赛B1求助
1013837
Tiskan_H楼主2024/10/2 18:43

rt,为什么最后两个点总是T啊

#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;

int t,sum=1;
int a[3]={0,399999949,249983999},b[3];

int gcd(int x,int y){
	if(x%y==0) return y;
	else return gcd(y,x%y);
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	
	cin>>t;
	while(t--){
		cout<<"? 399999949"<<std::endl;			fflush(stdout);
		cin>>b[1];								fflush(stdout);
		if(a[2]==-1) return 0;					fflush(stdout);
		cout<<"? 249983999"<<std::endl;			fflush(stdout);
		cin>>b[2];								fflush(stdout);
		if(b[2]==-1) return 0;					fflush(stdout);
		int ans=b[1],i=1;						fflush(stdout);	
		sum=sum*a[i]/gcd(sum,a[i]);				fflush(stdout);	
		while(ans%a[i+1]!=b[i+1])
			ans+=sum;							fflush(stdout);
		cout<<"! "<<ans<<std::endl;				fflush(stdout);
	}
	return 0;
}
2024/10/2 18:43
加载中...