在 C++ 中查找最接近或 a ^ b(a 的 b 次方)的 x 的倍数
c++server side programmingprogramming
假设我们有三个值,a、b 和 x。我们必须找到一个最接近 ab 的 x 的倍数。假设数字为 x = 4、a = 3、b = 3,则输出将为 28,因为这最接近 33 = 27
方法很简单;我们必须遵循这些条件 −
如果 b < 0,且 a = 1,则 ab 为 1,因此,x 的最接近倍数为 0 或 x。
如果 b < 0 且 a > 1,则 ab 小于 1,因此 x 的最接近倍数为 0。
如果 b > 0,则求 ab。然后让 mul = ab / x 的整数,则 x 的最接近倍数为 mul*x 或 (mul + 1)*x
示例
#include<iostream> #include<cmath> using namespace std; void findMultiple(int a, int b, int x) { cout << "Nearest multiple: "; if (b < 0) { if (a == 1 && x == 1) cout << "1"; else cout << "0"; } int mul = pow(a, b); int ans = mul / x; int ans1 = x * ans; int ans2 = x * (ans + 1); if((mul - ans1) <= (ans2 - mul)){ cout << ans1; } else{ cout << ans2; } } int main() { int a = 3, b = 3, x = 4; findMultiple(a, b, x); }
输出
Nearest multiple: 28