Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
19994 | 陈路垚 | 堆木头 | C++ | 通过 | 100 | 1470 MS | 248 KB | 468 | 2021-05-27 20:59:35 |
#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; }