在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 生日开业蛋糕祝福语简短