给出一个整数a和一个正整数n,求乘方an。 输入 一行,包含两个整数a和n。-1000000<a<1000000,1<n<10000。 输出 一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。 样例输入 复制
时间: 2024-09-27 12:10:54 浏览: 122
这是一个基础的数学问题,需要计算给定整数a的n次幂。在编程中,可以使用循环或者递归的方式实现。如果你想要一个简单的代码示例,这里有一个用Python编写的解决方案:
```python
def power(a, n):
if n == 1:
return a
elif n % 2 == 0:
# 如果n是偶数,我们可以先平方然后再除以2
half_power = power(a, n // 2)
return half_power * half_power
else:
# 如果n是奇数,我们先计算a的一半的n次幂,然后乘以a
half_power = power(a, (n - 1) // 2)
return a * half_power * half_power
# 样例输入
a = int(input().split()[0])
n = int(input().split()[1])
result = power(a, n)
print(result)
```
在这个代码中,`power`函数采用了分治策略,对于偶数n,它会递归地将问题规模减半;对于奇数n,它先计算一半的幂,再乘以底数a。
相关问题
描述 给出一个整数a和一个正整数n,求乘方an。 输入 一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。 输出 一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。
您需要编写一个程序来计算 $a^n$,其中 $a$ 和 $n$ 是给定的整数。可以使用循环来实现这个算法,但是更好的方法是使用递归。
递归是一种函数调用自身的技术。对于这个问题,我们可以定义一个递归函数 $power(a,n)$:
1. 如果 $n=0$,则返回 $1$。
2. 如果 $n$ 是偶数,则 $power(a,n)=power(a,n/2)*power(a,n/2)$。
3. 如果 $n$ 是奇数,则 $power(a,n)=a*power(a,n-1)$。
下面是一个使用递归实现的 Python 代码:
```python
def power(a, n):
if n == 0:
return 1
elif n % 2 == 0:
return power(a, n/2) * power(a, n/2)
else:
return a * power(a, n-1)
a, n = map(int, input().split())
print(power(a, n))
```
这个程序首先读取输入的整数 $a$ 和 $n$,然后调用递归函数 $power(a,n)$ 计算 $a^n$ 并输出结果。
java 描述 给出一个整数a和一个正整数n,求乘方an。 输入 一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。 输出 一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。
可以使用快速幂算法来解决这个问题。首先考虑暴力求解,将a连乘n次,时间复杂度是O(n)的,不够高效。快速幂算法是利用指数的二进制拆分,将指数n表示成二进制形式,例如十进制数13表示成二进制数1101,那么a^13 = a^(2^3) * a^(2^2) * a^(2^0)。每次将指数n的二进制形式中的一位转化为对应的幂后相乘,可以将时间复杂度降到O(logn)。
Java代码实现如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int n = scanner.nextInt();
long result = quickPower(a, n);
System.out.println(result);
}
// 快速幂算法
private static long quickPower(int a, int n) {
long result = 1L;
long base = a;
while (n != 0) {
if ((n & 1) != 0) {
result *= base;
}
base *= base;
n >>= 1;
}
return result;
}
}
```
注意在计算过程中要使用long类型,避免结果溢出。
阅读全文