天天看點

hpuoj-1215-毛毛的數學問題【數學】【枚舉】

題目連結:​​點選打開連結​​

[數學]

時間限制: 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;
}