对这道题的理解 大数的乘法 关键是 实型的 那么首先就是数出来小数点有几位这个相信很简单 从后面往前数刚开始0 不算接着就是遇到小数点结束如果没有小数点 那么置为0
接着就是输出地时候首先算出小数点的位置然后输出 你想怎么样都行 从后往前数这个时候输出 那么就是你也知道了 嘿嘿 剩下的就是 大数的乘法了 ......
代码
#include<stdio.h>
int main()
{
int i,m,n,j;
__int64 num[100],t;
while(scanf("%d%d",&n,&m)!=EOF){
for(i=0;i<100;i++)
num[i]=0;
num[1]=1;
num[0]=1;
for(i=1;i<=m;i++){
for(t=0,j=1;j<=num[0];j++){
num[j]*=n;
num[j]+=t;
t=num[j]/1000000000;
num[j]%=1000000000;
}
if(t!=0){
num[j]=t;
num[0]++;
}
}
for(i=num[0];i>0;i--){
i==num[0]?printf("%I64d",num[i]):printf("%09I64d",num[i]);
}
putchar('\n');
}
return 0;
}
int main()
{
int i,m,n,j;
__int64 num[100],t;
while(scanf("%d%d",&n,&m)!=EOF){
for(i=0;i<100;i++)
num[i]=0;
num[1]=1;
num[0]=1;
for(i=1;i<=m;i++){
for(t=0,j=1;j<=num[0];j++){
num[j]*=n;
num[j]+=t;
t=num[j]/1000000000;
num[j]%=1000000000;
}
if(t!=0){
num[j]=t;
num[0]++;
}
}
for(i=num[0];i>0;i--){
i==num[0]?printf("%I64d",num[i]):printf("%09I64d",num[i]);
}
putchar('\n');
}
return 0;
}
对于大数的基本运算我们还是要会的这个很训练基础的 开始我的ACM生涯了 哈哈哈哈O(∩_∩)O哈哈~