CF1928C Physical Education Lesson 题解
CF1928C Physical Education Lesson
我们发现,每 个数构成了一个周期。其中,前 个数为前周期,后 个数为后周期。我们对于 所处的周期进行分类讨论。
当 在前周期时,它是周期中的第 个元素。将总数 减去 ,剩下的数一定是由若干个完整的周期组成。枚举它的约数,我们可以用这个约数解出 的值。只有 为整数且 ,才能算作一个解,因为前周期最大的数是 。
当 在后周期时,它是周期中的第 个元素。将总数 减去 ,剩下的数 一定是由若干个完整的周期组成。我们发现,减去的 正好是我们要枚举的约数,并不影响 对 的整除性。所以我们直接枚举 的约数,我们可以用这个约数解出 的值。只有 为整数且 ,才能算作一个解,因为后周期最大的数是 。
注意 在后周期时,,因为我们发现后周期没有 。
#include <bits/stdc++.h>
using namespace std;
long long t,x,n;
int main()
{
scanf("%lld",&t);
while(t--)
{
long long ans=0,now=0;
scanf("%lld%lld",&x,&n);
now=x-n;
for(long long i=1;i*i<=now;i++)
if(now%i==0)
{
if(i%2==0&&(i+2)/2>=n)ans++;
if((now/i)!=i&&(now/i)%2==0&&((now/i)+2)/2>=n)ans++;
}
now=x+n-2;
if(n!=1)
for(long long i=1;i*i<=now;i++)
if(now%i==0)
{
if(i%2==0&&(i+2)/2>n)ans++;
if((now/i)!=i&&(now/i)%2==0&&((now/i)+2)/2>n)ans++;
}
printf("%lld\n",ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探