求助交互题
查看原帖
求助交互题
1043556
datiehaixuzishenying楼主2023/9/3 16:25
#include <bits/stdc++.h>
#define f fflush(stdout)
using namespace std;
int n,i,j,k,m,sum1=1,sum2=1,val1,val2,suma=1,sumb=1,x;
int a[1005],b[1005],c[1005],d[1005];
queue<int> q1,q2;
int main() {
    cin>>n>>m;
    int tmp1=m,tmp2=n;
    q1.push(1);
    q2.push(1);
    for(i=2;i<=m && tmp1>1;i++){
    	if(tmp1%i==0){
    		q1.push(i);
    		while(tmp1%i==0){
    			tmp1/=i;
    			a[i]++;
			}
			suma*=(a[i]+1);
		}
	}
	for(i=2;i<=n && tmp2>1;i++){
		if(tmp2%i==0){
			q2.push(i);
			while(tmp2%i==0){
				tmp2/=i;
				b[i]++;
			}
			sumb*=(b[i]+1);
		}
	}
	a[1]=1;b[1]=1;
	while(!q1.empty()){
		int tmp=q1.front();q1.pop();
		if(tmp==m) continue;
		printf("? %d %d %d %d %d %d\n",n,m-tmp,1,1,1,tmp+1);
	    f;
	    cin>>x;
	    if(x==0){
	    	if(tmp>1) sum1*=(a[tmp]+1);
		}
		else{
			c[tmp]=a[tmp];
			if(tmp==1) break;
		}
	}
	while(!q2.empty()){
		int tmp=q2.front();q2.pop();
		if(tmp==n) continue;
		printf("? %d %d %d %d %d %d\n",n-tmp,m,1,1,tmp+1,1);
		f;
		cin>>x;
		if(x==0){
			if(tmp>1) sum2*=(b[tmp]+1);
		}
		else{
			d[tmp]=b[tmp];
			if(tmp==1) break;
		}
	}
	if(c[1]==1) val1=suma;
	else{
		int sum=1;
		for(i=2;i<=m;i++)
		  sum*=(c[i]+1);
		val1=sum1*(sum-1);
		if(val1==0) val1=1;
	}
	if(d[1]==1) val2=sumb;
	else{
		int sum=1;
		for(i=2;i<=n;i++)
		  sum*=(d[i]+1);
		val2=sum2*(sum-1);
		if(val2==0) val2=1;
	}
	printf("! %d",val1*val2);
	f;
	return 0;
}

评测姬一直返回格式错误,但似乎没有错呀QAQ

CF1493F

2023/9/3 16:25
加载中...