CF1967B1 Reverse Card (Easy Version) 题解
CF1967B1 Reverse Card (Easy Version)
我们发现 必然为 的倍数,那么 的倍数 也必然为 的倍数。所以, 必然为 的倍数。因为 为 的倍数,所以 ,原式可化为 ,其中 为正整数。
考虑枚举 ,原式可化为 。又因为 ,则 。则 的最大值为 ,共有 种取值,对应的, 也有 种取值。
注意最后有 这种情况会算重,需要减去 。
代码实现与讲解略微不同,但本质一样。
#include <bits/stdc++.h>
using namespace std;
long long t,n,m;
int main()
{
scanf("%lld",&t);
while(t--)
{
long long ans=0;
scanf("%lld%lld",&n,&m);
for(int i=1;i<=m;i++)
{
if(n<(i-1)*i)break;
ans=ans+(n-(i-1)*i)/(i*i)+1;
}
printf("%lld\n",ans-1);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探