对这道题的理解 大数的乘法 关键是 实型的 那么首先就是数出来小数点有几位这个相信很简单 从后面往前数刚开始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哈哈~