最后俩点过不去,代码哪里错了呢
查看原帖
最后俩点过不去,代码哪里错了呢
615989
Mathemartist楼主2023/11/9 21:48
#include<stdio.h>
int a[2000000+10];
int main(){
	int n;
	scanf("%d",&n);
	int s=n/2+1;
	for(int i=1;i<=s;i++){
		a[i]+=a[i-1]+i;
	}
	for(int i=1;i<=s;i++){
		int l=0,r=i-1;
		while(l<r){
			int mid=(l+r)>>1;
			if(a[i]-a[mid]<=n) r=mid;
			else l=mid+1;
		}
		if(a[i]-a[r]==n) printf("%d %d\n",r+1,i);
	}
	return 0;
}
2023/11/9 21:48
加载中...