在 C++ 中查找最接近 a^b(a 的 b 次幂)的 x 的倍数
假设我们有三个值 a、b 和 x。我们必须找到 x 的一个倍数,该倍数最接近 ab。假设这些数字为 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP