當前位置:編程學習大全網 - 源碼下載 - UVA 10106 - Product壹直WA

UVA 10106 - Product壹直WA

簡單的大數乘法問題,錯誤應該壹般就是進位的問題,進位問題沒有考慮周全的問題,建議妳仔細查看壹下代碼中有關進位的部分的處理。應該是這裏出了問題。AC代碼,供參考,仔細看看妳在進位時遺漏了什麽吧:

#include<iostream>

#include<string.h>

usingnamespace std;

void ma(char*,char*);

char a[1200],b[1200];

int c[2300];

int main(void)

{

while(cin>>a>>b)

{

for(int i=0;i<2300;i++) c[i]=0;

ma(a,b);

}

return0;

}

void ma(char*x,char*y)

{

int m,n,i,j,k,temp=0;

char a[1200],b[1200];

m=strlen(x);

n=strlen(y);

for(i=0;i<m;i++)

{

a[i]=x[m-i-1];

}

a[m]='\0';

for(i=0;i<n;i++)

{

b[i]=y[n-1-i];

}

for(i=m-1;i>=0;i--)

{

if(a[i]!='0')break;

temp++;

}

for(i=n-1;i>=0;i--)

{

if(b[i]!='0')break;

temp++;

}

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

c[i+j]+=(a[i]-48)*(b[j]-48);

}

for(k=0;k<n;k++)

{

if(c[k+i]>=10){c[k+i+1]+=c[k+i]/10;c[k+i]%=10;}

}

}

for(i=2100;i>=0;i--)

{

if(c[i]!=0)break;

}

for(;i>=0;i--) cout<<c[i];

for(i=0;i<temp;i++) cout<<0;

cout<<endl;

}

我是用C++寫的,希望妳能看懂,另外將數組元素初始化時盡量自己寫代碼吧,盡量不用函數初始化,這個也有可能因編譯器差異而出現問題

  • 上一篇:扁平插畫人物系列-極簡抽象的色彩藝術——扁平風格插畫
  • 下一篇:如何在OpenFOAM中實現復雜流體方程的求解?
  • copyright 2024編程學習大全網