/*程序思想
题意:给两个很大的数求他们的成绩
9 9
9 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
最新推荐文章于 2022-02-23 15:02:25 发布