专栏文章
题解:SP25584 FCDC - Factorial Modulo
SP25584题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mimyokhn
- 此快照首次捕获于
- 2025/12/01 17:43 3 个月前
- 此快照最后确认于
- 2025/12/01 17:43 3 个月前
题目大意
给定两个整数 ,求满足 且 的整数 的数量。
首先可以发现,如果 ,那对于 有 。
因此,我们可以分解 后用二分找满足条件的区间,即为:
CPP找到 使得 。找到 使得 。输出区间
#include<bits/stdc++.h>
using namespace std;
#define N 10010
int count(int x,int shu)
{
int cnt=0;
while(x>0) x/=shu,cnt+=x;
return cnt;
}
int solve(int a)
{
if(a==1) return 1;
int res=0;
for(int i=2;i*i<=a;i++)
if(a%i==0)
{
int cnt=0;
while(a%i==0) cnt++,a/=i;
int l=1,r=1e6,ans=0;
while(l<=r)
{
int mid=l+r>>1;
if(count(mid,i)>=cnt)
ans=mid,r=mid-1;
else l=mid+1;
}//二分
res=max(res,ans);
}
res=max(res,a);//剩下的也要计算
return res;
}
int n,m;
int main()
{
cin>>n>>m;
int ans=max(0,solve(m)-solve(n));
cout<<ans;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...