Mark 吃的東西成等差數列,其中公差
給一個數字 n 為 Mark 吃的總和
求投餵的方法數
窮舉等差數列長度 ,計算
如果 是正整數則這是一個有效的方法:cnt++
另外,首項最小值是 1
因此如果 ,就可以提前 break
等差數列求和公式:
— — —
其中,總和為 、:
評分結果(參考) : AC (1ms, 340KB)
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
while(true) {
cin >> n;
if(n == 0) break;
int cnt = 0;
for(int k=2; k<n; k++){
double a1 = (2.0*n/k - k + 1)/2;
if(a1 < 1) break;
if(a1 == (int)a1) cnt++;
}
cout << cnt << "\n";
}
return 0;
}