83D. Numbers(容斥+暴力)

Numbers

https://ac.nowcoder.com/acm/problem/109065

传送门

由于不能包括的因子

所以得到的数字分解质因子后必定都是大于等于的质因子

那么一个数的质因子不会个...好像没什么用

搜索的复杂度是上天的。

那就套路的容斥,求符合条件的就是求符合条件的

那么如何求的方案数....

首先是倍数的数有个,在这基础上需要进行容斥,因为有数拥有比小的因子的同时也拥有

也就是减去是的倍数的数

这里使用递归计算

然后目测复杂度很低,因为一直除以

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a,b,k;
bool isprime(int x)
{
    for(int i=2;i*i<=x;i++)
        if( x%i==0 )    return false;
    return true;
}
int solve(int n,int k)
{
    if( n<k||!isprime(k) )    return 0ll;
    if( k*k>n )    return (n>=k);
    int ans = n/k;
    for(int i=2;i<k;i++)
        ans -= solve(n/k,i);
    return ans;
}
signed main()
{
    cin >> a >> b >> k;
    cout << solve(b,k)-solve(a-1,k) << endl;
    return 0;
}
全部评论
OOOOrz
点赞 回复 分享
发布于 2021-01-06 21:57
OOOOrz
点赞 回复 分享
发布于 2021-01-06 21:55

相关推荐

牛客773130651号:巨佬,简历模板换成上下的,左右的很烦,hr看着不爽。。。科大随便乱杀,建议能保研就保研,不行也得考一下 ,985硕去干算法,比开发强多了。开发许多双非都能搞,学历优势用不上,算法有门槛
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务