解题思路:
竖式计算
注意事项:
参考代码:
#include<stdio.h>
int a[100001]={0}; //------定义一个大容量的全局变量整形数组,如果是定义成局部的话,会因为局部内存不足导致程序错误
int main()
{
int x,y,i,j,w=1; //-------w的值是记录位数
a[0]=1;
scanf("%d%d",&x,&y);
for(i=0;i<y;i++)
{
for(j=0;j<w;j++) //----每一位都要乘于一个乘数(竖式计算,可以在纸上列一个竖式计算的乘法辅助理解)
a[j]*=x;
for(j=0;j<w;j++)
{
if(j+1==w&&a[j]/10)
w++; //-------判断位数是否增加(在这个程序中,这个位数可有可无,我打习惯了,就顺便打进去的)
a[j+1]+=a[j]/10; //--------逢十进一
a[j]%=10; //-------进位后剩下的结果
}
}
for(i=2;i+1;i--) //----a[0]是个位,a[1]是十位,a[2]是百位,以此类推
printf("%d",a[i]); //----因为一开始就将数组各个数初始化为0,所以不用在考虑需不需要补0的问题。
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复