写一段快速幂运算 用C++
时间: 2023-02-25 15:49:46 浏览: 103
C语言中可以使用快速幂算法实现快速幂运算。以下是一个快速幂函数的示例代码:
```
#include <stdio.h>
long long quick_pow(int a, int b) {
long long result = 1;
while (b > 0) {
if (b & 1) {
result = result * a;
}
b >>= 1;
a = a * a;
}
return result;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%lld\n", quick_pow(a, b));
return 0;
}
```
该代码实现了快速幂算法,每次将幂次 b 除以 2,并将底数 a 乘以自身。该代码对于任意输入的 a 和 b,都能够计算出 a^b 的结果。
相关问题
写一段长形整数下的长形整数次幂运算取模c++语言算法
在 C++ 中,处理大整数(如长整型)的次方运算并取模通常涉及到高效的算法,比如快速幂算法(Fast Exponentiation)。这个算法利用了指数的二进制表示,避免直接对大整数进行多次乘法。
以下是一个使用迭代快速幂算法的 C++ 代码示例,用于计算长形整数 a 的 b 次幂取模 c:
```cpp
#include <vector>
#include <string>
// 将字符串转换为长整型
long long int strToLong(const std::string &str) {
long long int result = 0;
for (char c : str) {
if (isdigit(c))
result = result * 10 + c - '0';
}
return result;
}
// 快速幂取模
long long int fastPowerMod(long long int base, long long int exponent, long long int modulus) {
long long int result = 1;
base %= modulus; // 取模操作,防止溢出
while (exponent > 0) {
// 如果指数是奇数,则将结果乘以base并取模
if (exponent % 2 == 1)
result = (result * base) % modulus;
// 将指数除以2并平方base
exponent /= 2;
base = (base * base) % modulus;
}
return result;
}
int main() {
std::string num_str1, num_str2, mod_str;
std::cout << "Enter the first number: ";
std::getline(std::cin, num_str1);
std::cout << "Enter the second power: ";
std::cin >> num_str2;
std::cout << "Enter the modulus: ";
std::cin >> mod_str;
long long int a = strToLong(num_str1);
long long int b = strToLong(num_str2);
long long int c = strToLong(mod_str);
long long int result = fastPowerMod(a, b, c);
std::cout << "Result (modulus): " << result << "\n";
return 0;
}
```
在这个例子中,`strToLong` 函数用于将输入的字符串转换为长整型,然后 `fastPowerMod` 函数实现了快速幂算法,最后在 `main` 函数中调用这些功能。
给出可以人工输入变量的模幂运算的C++代码
以下是一个可以人工输入变量的模幂运算的C++代码示例:
```c++
#include<iostream>
using namespace std;
// 计算 x^y mod p 的值
long long power(long long x, long long y, long long p){
long long res = 1;
x %= p;
while (y > 0){
if (y & 1)
res = (res*x) % p;
y = y>>1;
x = (x*x) % p;
}
return res;
}
int main(){
long long x, y, p;
cout << "请输入 x、y、p 的值:";
cin >> x >> y >> p;
cout << "x^y mod p = " << power(x, y, p) << endl;
return 0;
}
```
这段代码中,我们定义了一个 `power` 函数来计算模幂运算的结果。其中,`x` 表示底数,`y` 表示指数,`p` 表示模数,函数返回 `x^y mod p` 的值。在 `main` 函数中,我们通过 `cin` 来读入用户输入的 `x`、`y`、`p` 的值,并输出计算结果。
阅读全文