【CSDN编程挑战】高斯公式

<span style="color: rgb(255, 0, 0); font-size: 24px;">这个题目已经在电脑上运行并且测试通过了,不知为何提交到网上总是报错(输出结果错误)?希望高手可以不吝赐教,指正错误。</span>
//
/*
高斯公式
题目详情:
高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。
输入格式:
多组数据,每组数据一行,一个正整数n。 0<n<2000000000
输出格式:
每组数据一行,包含一个正整数,表示结果。
答题说明:
输入样例
5
120
输出样例:
2
4
解释:
5=2+3=5
120=1+2+...+15=22+23+24+25+26=39+40+41=120
*/

//#include "stdafx.h"
#include <iostream>
//#include <fstream>
using namespace std;
int main()
{	
	int n;
	int sum;
	int counter;
	//ifstream cin("a.txt");
	while(cin>>n)
	{
		counter=0;
		for(int i=1;i<=(n/2+1);i++)
		{
			sum=0;//initial everytime
			for(int j=i;j<=(n/2+1);j++)
			{
				if(sum<n)
					sum+=j;	

				if(sum>n){ 
					sum=0;
					break;
				}
				if(sum==n)
				{
					counter++;
					sum=0;
					break;//得到结果后,
				}
			}
		}
		if(n==2||n==1||counter==0)//1和2以及只有本身的数要单独考虑,只有本身一种情况
			cout<<1<<endl;
		else if(counter!=0)
			cout<<counter+1<<endl;
	}
	//system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江前云后

文章结束的标识:打赏链接

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值