|
两个很大的数相乘?(用C++)
[这个贴子最后由idealguy在 2006/12/05 08:25pm 第 2 次编辑]
帮6楼的贴出来- #include<iostream>
- using namespace std;
- int main()
- {
- char str1[1000],str2[1000],str3[1000],sum[1000],str[1000];
- int a,i,n=0,j,s,k,m,len3;
- char t;
- cin>> str1 >> str2;
- int len=strlen(str2);
- for(i=0;i<len;i++)
- n=n*10+(str2[i]-';0';);
- k=strlen(str1)-1;
- for(i=k;i>=0;i--)
- {
- str3[i]=str1[i];
- }
- for(a=1;a<n;a++)
- {
- k=strlen(str1)-1;
- m=strlen(str3)-1;
- for (i=m;i>m-k,k>=0;i--,k--)
- {
- t=str1[k];
- str[i]=t;
- }
- s=0;
- for(;m>=m-k;m--)
- {
- sum[m]=(str3[m]-';0';+(str[m]-';0';)+s)%10+';0';;
- s=(str3[m]-';0';+(str[m]-';0';)+s)/10;
- }
- while(m>=0)
- {
- sum[m]=(str3[m]-';0';+s)%10+';0';;
- s=(str3[m]-';0';+s)/10;
- m--;
- }
- if(s!=0)
- {
- for(j=len3,m=len3-1;j>=1,m>=0;j--,m--)
- {
- t=sum[m];
- sum[j]=t;
- }
- sum[0]=s+';0';;
- len3=strlen(sum);
- for(n=0;n<=len3;n++)
- str3[n]=sum[n];
- }
- else
- {
- len3=strlen(sum);
- for(n=0;n<len3;n++)
- str3[n]=sum[n];
- }
- }
- int l=strlen(str3);
- for(n=0;n<l;n++)
- cout<<str3[n];
- return 0;
- }
复制代码 |
|