加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

A × B problem(大数相乘算法)

发布时间:2020-12-14 02:53:32 所属栏目:大数据 来源:网络整理
导读:#include stdio.h#include string.h int main(){ char a[101],b[101];//定义a,b数组! int i,j,k,cas,count=1,num2,num3; scanf("%d",cas);//获取数据的组数 getchar(); while(cas--) { int c[10000]={0};//定义一个整型数组c scanf("%s %s",a,b);//获取字符
#include <stdio.h>
#include <string.h> 
int main()
{
    char a[101],b[101];//定义a,b数组!
    int i,j,k,cas,count=1,num2,num3;
    scanf("%d",&cas);//获取数据的组数
    getchar();
    while(cas--)
    {
        int c[10000]={0};//定义一个整型数组c
        scanf("%s %s",a,b);//获取字符串a,b
        num2=strlen(a);//num2为数组a的长度
        num3=strlen(b);//num3为数组c的长度
    getchar();
    if(strcmp(a,"0")==0||strcmp(b,"0")==0)//当字符串a和字符串b为0时!
    {
        printf("Case %d:n",count);
        printf("%s * %s = 0n",b);
        count++;
    }
    else {
            for(i=0;i<num2;i++)
			{
				for(j=0;j<num3;j++)
				{
					c[i+j]+=(a[num2-i-1]-'0')*(b[num3-j-1]-'0');//这个得用纸画才好理解!
					k=i+j;
					while(c[k]>=10)
					{
						c[k+1]+=c[k]/10;c[k]%=10;k++;}
					}
			}
        i=9999;num2=i;//num2记录的是字符串c的长度!
        while(c[i]==0)//当c[i]==0说明字符串前置为0,就要后移,找到实际数!
        {            
            i--;num2= i;
        }
        printf("Case %d:n",count);
        count++;
        printf("%s * %s = ",b);
        for(i=num2;i>=0;i--)
        {printf("%d",c[i]);}
        printf("n");}
    if(cas>=1)//当cas>=1的时候,每次执行完,空一行!
    {printf("n");}
}
return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读