本文主要是介绍uva 10106 Product,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*程序思想
题意:给两个很大的数求他们的成绩 9 99 9
—————8 9 1
8 9 1
—————
8 17 10 1
sum[3] sum[2] sum[1] sum[0]
sum储存该位总和和在取余
*/ #include <stdio.h>
#include<string.h>
const int MAXN=510;int main(int argc, char *argv[])
{char temp1[MAXN],temp2[MAXN];int sum[MAXN];int i,k,c,j;memset(temp1,0,sizeof(0));memset(temp2,0,sizeof(0));while(scanf("%s%s",temp1,temp2)!=EOF){memset(sum,0,sizeof(sum));if(temp1[0]=='0' || temp2[0]=='0') //若有一个数为0,输出0 {printf("0\n"); continue;}int len1=strlen(temp1);int len2=strlen(temp2);for(i=0;i<len1;i++)temp1[i]-='0';for(i=0;i<len2;i++)temp2[i]-='0' ; //ascii<10便于计算 for (i=len1-1;i>=0;i--){k=len1-1-i; for (j=len2-1;j>=0;j--){sum[k]=sum[k]+temp1[i]*temp2[j];k++;} }c=0;i=MAXN-1;k=0;while(i--){int s=sum[k]+c;//赋予s,若直接用sum取余,导致c的值不准确 sum[k]=s%10;c=s/10;k++; }for (i=MAXN-1;i>=0;i--) if(sum[i]) break;for (;i>=0;i--) printf("%d",sum[i]);printf("\n");memset(temp1,0,sizeof(0));memset(temp2,0,sizeof(0));}return 0;
}
这篇关于uva 10106 Product的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!