P1147 连续自然数和

主宰稳场 提交于 2019-11-30 20:51:34

一开始我是分解的n,求得这一段合法连续自然数的中间,只要存在并且左右不超范围即可,然后忘了连续的为偶数也可以,只要两两配对成就行。

sum(1,n)=(r+l)*(l-r+1)/2;

设k1=(r+l),k2=(l-r+1);l=(k2-k1+1)/2,r=(k1+k2-1)/2;

由此可得k1,k2必须一奇一偶。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main(){
	scanf("%d",&n);
	n=2*n;
	for(int i=sqrt(n);i>=2;i--){
		int kk=n/i,ll=n%i;
		if(ll==0&&(i+kk)%2!=0)	
			printf("%d %d\n",(kk-i+1)/2,(kk+i-1)/2);
		
	}
	return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!