【题解】A23329.等差数列计数
题目链接:等差数列计数
题目描述
首先根据题目要求,给定一个等差数列的首项
例如,对于第一个
思路分析
我们知道,等差数列的公差数量就是这个等差数列的可行方案数,即有多少种不同的公差方案,就可以构造出多少种不同的等差数列。因此通过分析题意,我们可以将问题更细致地转换为 已知等差数列的首项和尾项,求出这个等差数列公差的可行方案数。所以对于本题而言,我们只需要求出有多少个公差就可以了。
显然本题的就引刃而解了,我们只需要求出这个等差数列首项和末项的差的绝对值,即
例如,当
结论证明
通过等差数列公式,我们可以将等差数列的首项和末项通过公式联立起来,得到
由于我们想要求解所有的因数个数,因此我们将通过移项的操作将
由于等差数列的性质,
为了方便起见,我们将
AC 代码
以下是本题的 AC 代码。需要注意的是,由于本题的数据量比较大,因此在判断因数的过程中需要优化算法(与判断质数类似),这样子算法就可以在
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int t, a, b;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> t;
while(t--){
cin >> a >> b;
int change = abs(b - a), cnt = 0;
for (int i=1; i*i<=change; i++){
if (change % i == 0){
if (i*i != change) cnt += 2;
else cnt += 1;
}
}
cout << cnt << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具