uva-10106 - Product

这道题目我做了很长时间,主要原因是一开始用的方法走到最后的时候走错了,无奈之下只好换了个思路。

这个题目的思路和上一个题目的思路几乎差不多,都是一个个剥离出来,不过这次我把字符串保存的数字直接用ASCII码表示了。

#include <stdio.h>   
#include <string.h>   
int main()  
{  
	int u,i,j,k,n,m,shu,leap;
    char str2[10000],str1[10000],sum[10000];  
    while(gets(str1)!=NULL)  
    {    
		gets(str2);
        memset(sum,0,sizeof(sum));  
        n=strlen(str1);  
        m=strlen(str2);
		for(i=0;i<n;i++)  
            str1[i]-='0';    
        for(i=0;i<m;i++)  
            str2[i]-='0';
        for(k=n-1;k>=0;k--)  
        {  
            leap=0;  
            u=n-1-k;  
            for(j=m-1;j>=0;j--)  
            {  
                shu=str2[j]*str1[k]+leap+sum[u];  
                sum[u]=shu%10;  
				u++;
                leap=shu/10;  
            }  
            if(leap)  
			{
                sum[u]=leap;  
				u++;
			}
        } 
        for(i=u-1;i>0;i--) 
            if(sum[i])  
                break;  
        for(i;i>=0;i--)  
            printf("%d",sum[i]);  
        printf("\n");  
    }  
    return 0;  
}  



 

你可能感兴趣的:(uva-10106 - Product)