題目連結:點選打開連結
[數學]
時間限制: 1 Sec
記憶體限制: 128 MB
送出: 31
解決: 4
[
送出][
狀态][
讨論版]
題目描述
毛毛是個喜歡數學的小蘿莉,她發現對于21可以由 1+2+3+4+5+6, 6+7+8, 10+11等3組長度大于等于2的連續序列相加得到。
那麼對于一個正整數N,你可以幫毛毛找出N可以有幾組連續的正整數(長度>=2)相加得到嗎?
輸入
有多組測試資料,每一組輸入一個正整數N(1 <= N <= 1 000 000 000)
輸出
輸出這些長度大于等于2的連續正整數序列的個數,每組輸出占一行。
樣例輸入
1
2
3
4
21
樣例輸出
0
0
1
0
3
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int n;
bool judge(int x)
{
if(2*n%x)
return 0;
int y=2*n/x;
int a=y-x+1;
int b=x+y-1;
if(a%2==0&&b%2==0&&(a!=b))
return 1;
return 0;
}
int main()
{
while(~scanf("%d",&n))
{
int ans=0;
for(int i=1;i*i<=2*n;i++)
{
if(judge(i))
{
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}