题目:
给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。
解题思路:
正整数n,如果是m个连续正整数之和,那么就是x1+x2+...+xm .将这m个数中都包含的基数提取出来,就变成:(1+y)+(2+y)+...+(m+y)=y*m+1+2+...+m=y*m+S(m)其中S(m)表示1到m的和。由此可见,n-S(m)=y*m,这就是说,n-S(m)是m的整数倍。
代码:
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int i=1;
int s=0;
int count=0;
for(;s<n;i++)
{
s=s+i;
if((n-s)%i==0)
{
count++;
}
}
cout<<count<<endl;
}
return 0;
}