對這道題的理解 大數的乘法? 關鍵是 實型的? 那么首先就是數出來小數點有幾位這個相信很簡單 從后面往前數剛開始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哈哈~