1. 程式人生 > >小米oj 有多少個公差為2的等差數列

小米oj 有多少個公差為2的等差數列

- 有多少個公差為 2 的等差數列

序號:#31難度:有挑戰時間限制:1000ms記憶體限制:10M

描述

給出一個正整數N(2<= N <=10000000),統計有多少公差為2的正整數等差數列,使得數列的和為N。

舉例: 正整數 15,可以寫為 15 和 3,5,7 兩個等差數列。 其中 15 自身就是一個等差數列,3+5+7=15 也是一個符合條件的等差數列,所以輸出為 2,表示有兩個符合條件的等差數列。

  • 請注意時間複雜度限制

輸入

一個正整數,表示等差數列中所有數的和,範圍為 [2, 10000000]

輸出

一個正整數,表示可以找到多少符合條件的正整數等差數列。 (由於一個數字也可以算做等差數列,所以輸出至少為1)

輸入樣例

15
30
50

 複製樣例

輸出樣例

2
4
3



#include<stdio.h>
using namespace std;
typedef long long ll;
int main()
{
    //freopen("in.txt","r",stdin);
    ll n;ll m;
    while(~scanf("%lld",&n))
    {
        ll ans=1;
        for(int L=2;L<=n/2;L++)
        {
            if(n%L)continue;
            if(n/L-L+1>=1&&(n/L-L+1)+(L-1)*2<=n)ans++;
        }
        printf("%lld\n",ans);
    }   
    return 0;
}