在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 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短