提交时间:2021-05-27 20:59:35
运行 ID: 19994
#include<bits/stdc++.h> using namespace std; int main() { // freopen("x12_8.in","r",stdin); // freopen("x12_8.out","w",stdout); int sum=0; long long a,n,k,kk; cin>>n; for(k=2;k<=n;++k){//k为木头分为多少排一堆 kk=(1+k-1)*(k-1)/2;//1到k-1的和 if(n-kk<=0)break;//这时的k为最大分的排数 a=(n-kk)/k;//求出第一排有多少个木头 if(a*k+kk==n)sum++;//各排数据之和==n,是合理的 } cout<<sum; return 0; }