1 条题解
-
0
简单二分
思路
题目直接要求求第几个不好求,但是如果让你求所有的有几个符合要求的就很简单,我们只需用二分,找到哪一个数正好使得小于等于他的数符合条件的个数正好等于即可。
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
- 上传者