小米oj 有多少個公差為2的等差數列
阿新 • • 發佈:2018-12-20
有多少個公差為 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; }