在C ++中找到第N个可被a或b整除的项的程序
为此,我们将提供两个整数a和b。我们的任务是找到可被a或b整除的第n个项。
示例
#include <bits/stdc++.h>
using namespace std;
//返回a和b的GCD-
int gcd(int a, int b) {
if (a == 0)
return b;
return gcd(b % a, a);
}
//计算可分割项的数量
int divTermCount(int a, int b, int lcm, int num) {
return num / a + num / b - num / lcm;
}
int findNthTerm(int a, int b, int n) {
int low = 1, high = INT_MAX, mid;
int lcm = (a * b) / gcd(a, b);
while (low < high) {
mid = low + (high - low) / 2;
if (divTermCount(a, b, lcm, mid) < n)
low = mid + 1;
else
high = mid;
}
return low;
}
int main(){
int a = 2, b = 5, n = 10;
cout << findNthTerm(a, b, n) << endl;
return 0;
}输出结果
16
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短