1 条题解

  • 0
    @ 2026-8-18 14:42:17

    简单二分

    思路

    题目直接要求求第几个不好求,但是如果让你求所有x\leq x的有几个符合要求的就很简单,我们只需用二分,找到哪一个数正好使得小于等于他的数符合条件的个数正好等于kk即可。

    AC代码

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int gcd(int a,int b)
    {
    	if(b==0)return a;
    	return gcd(b,a%b);
    }
    int lcm(int a,int b){return a/gcd(a,b)*b;}
    signed main()
    {
    	int n,m,k;scanf("%lld%lld%lld",&n,&m,&k);
    	int l=min(n,m),r=max(n,m)*k,ans;
    	while(l<=r)
    	{
    		int mid=l+r>>1;
    //		printf("%lld\n",mid);
    		if(mid/n+mid/m-mid/lcm(n,m)*2<k)l=mid+1;
    		else r=mid-1,ans=mid;
    	}
    	printf("%lld\n",ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    1699
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    5
    已通过
    5
    上传者