求助!
查看原帖
求助!
134066
Pethly_Cat楼主2020/9/28 19:59

不知道为什么WA了

#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
int n,m,q[1000001],x;
map<int,int>a;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i*i<=n;i++){
		if(m%i==0&&(m-i)%(i*2)==0&&i-(m-i)/(i*2)>0){
			a[i-(m-i)/(i*2)]=i+(m-i)/(i*2);
			q[++x]=i-(m-i)/(i*2);
			int j=m/i;
			if(m%j==0&&(m-j)%(j*2)==0&&j-(m-j)/(j*2)>0){
				a[j-(m-i)/(j*2)]=j+(m-j)/(j*2);
				q[++x]=j-(m-i)/(j*2);
			}
		}
	}
	for(int i=1,j=2;j<=n&&i+j<=n;i++,j++){
		if(m%(i+j)==0&&i-m/(i+j)>0){
			a[i-m/(i+j)+1]=j+m/(i+j)-1;
			q[++x]=i-m/(i+j)+1;
		}
	}
	sort(q+1,q+x+1);
	for(int i=1;i<=x;i++)
	printf("[%d,%d]\n",q[i],a[q[i]]);
	if(m<=n) printf("[%d,%d]",m,m);
	return 0;
}
2020/9/28 19:59
加载中...