Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
20013 | 桑迪 | 堆木头 | C++ | 通过 | 100 | 1401 MS | 252 KB | 392 | 2021-05-27 21:52:11 |
#include<bits/stdc++.h> using namespace std; int sum=0; long long a,n,k,kk; int main(){ 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; }