1069:乘方计算
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
给出一个整数a和一个正整数n(-1000000≤a≤1000000,1≤n≤10000),求乘方an,即乘方结果。最终结果的绝对值不超过1000000。
【输入】
一行,包含两个整数a和n。-1000000≤a≤1000000,1≤n≤10000。
【输出】
一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。
【输入样例】
2 3
【输出样例】
8
说明:
主要考查乘方问题在循环中的应用。
an表示n个a进行相乘的结果。例如a = 2,n = 3,表示3个2相乘,即2×2×2=8。
题目概述:
输入a和n,求出乘方an的结果。
思路分析:
在上方已说明乘方的概念。利用循环即可。
输入a和n,循环n次,每次乘以a。循环n次后,刚好有n个a相乘。
应使用一个变量来存储每次乘以a的结果,可以用变量power来表示乘方。同时变量power应有一个具体的初值。在以前的求和或计数中,变量sum初值为0,cnt初值为0。但那是相加,而现在是相乘,如果power初值为0,那么0乘以任何数都为0,而1乘以任何数都为该数本身,所以power初值应为1。算法与求和一样,只不过把加号改为乘号而已。
数据类型:本题的数据看似很大,其实题目已指明最终结果的绝对值不超过1000000,所以选择int类型即可。
延伸学习:
本题除了使用循环外,还可以使用数学库函数pow,用法如下:
pow(a, n)
C++头文件
C语言头文件<>
例如a = 2,n = 3,那么pow(a, n)的结果为8。
在下方代码中也会展示本方法。
建议初学者应使用循环来完成,从而达到进一步熟练循环的基本用法和对乘方的理解,使自己的算法能力得到更好的提升。
求解过程:
声明3个int类型变量a、n、power = 1。
输入2个整数分别给变量a和n。
循环n次,循环体中:
1.将power乘以a赋给power。
++。
循环外:
输出power的值。
参考代码 - C++:
// 方法1(循环)
#include <iostream>
using namespace std;
int main()
{
int a, n, power = 1;
cin >> a >> n;
for (int i = 1; i <= n; i++)
power *= a; // 相当于power=power*a
cout << power;
return 0;
}
// 方法2(pow函数)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, n;
cin >> a >> n;
int power = pow(a, n);
cout << power;
return 0;
}
参考代码 - C语言:
#include <>
int main()
{
int a, n, power = 1, i;
scanf("%d %d", &a, &n);
for (i = 1; i <= n; i++)
power *= a; // 相当于power=power*a
printf("%d", power);
return 0;
}