数学问题
2025-01-01 17:33:46
发布于:广东
20阅读
0回复
0点赞
首先理解算术级数之和是什么
等差数列的前n项和称为一个算术级数。
因此,我们需要找到一个公差为等差数列,使它的所有数之和为,
设这个数列为,它的首项是,末项是,项数是,
所以总和,
也就是,
方程可重写为,
因为都是整数,所以必须是的因数,必须是的倍数,
所以我们只需要遍历的因数,并判断是否是的倍数
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
long long n,cnt=0;
cin >> n;
n*=2;
for (int i=1;i<=sqrt(n);i++)
{
if (n%i==0 && (n/i-i+1)%2==0)
cnt+=2;
}
cout << cnt;
return 0;
}
这里空空如也
有帮助,赞一个