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

大数乘(正整数)

发布时间:2020-12-14 02:14:41 所属栏目:大数据 来源:网络整理
导读:大数乘(正整数) My ? solution: /*2015.10.31*/ #includestdio.h#includestring.hint t1[100],t2[100],t3[1000]; char c1[100],c2[100];int main(){int i,j=0,m1,m2,k=0,g;gets(c1);gets(c2);memset(t3,sizeof(t3));m1=strlen(c1);m2=strlen(c2);for(i=m1-1;

大数乘(正整数)

My ? solution:

/*2015.10.31*/

#include<stdio.h>
#include<string.h>
int t1[100],t2[100],t3[1000]; 
char c1[100],c2[100];
int main()
{
	int i,j=0,m1,m2,k=0,g;
	gets(c1);
	gets(c2);
	memset(t3,sizeof(t3));
	m1=strlen(c1);
	m2=strlen(c2);
	for(i=m1-1;i>=0;i--)
	{
			t1[j++]=c1[i]-'0';
	 } 
	j=0;
	for(i=m2-1;i>=0;i--)
	{
			t2[j++]=c2[i]-'0';
	}
	for(i=0;i<m1;i++)
	{
		k=i;/*当t1数组中的第i个元素和t2整个数组相乘时,把求得的结果按位依次存放在以i为下标起点的t3数组中,见下图*/
		for(j=0;j<m2;j++)           
		{                          
			t3[k++]+=t1[i]*t2[j];  
		}	                       
	}     	                          
	for(i=0;i<k;i++)           
	{                          
		if(t3[i]>9)               
		{                        
			g=t3[i]/10;
			t3[i]%=10;
			if(i==k-1)/*考虑最高位进位,所以数组长度也要增加,可能某个数组元素为3位数,例124,则原则上需连续两次进位*/ 
			{         /*,但实际只需进一次位即12,12加入到新的数组元素中再通过上述循环继续进位就解决了*/
				k+=1;	
			}	
			t3[i+1]+=g;
		}
	}
	for(i=k-1;i>=0;i--)
	printf("%d",t3[i]);
	return 0;
}
   /* 如:      t3[4]          t3[5]         t3[6]
(上述程序:)      124            56             0
                  4           12+56=68         0
                  4             8              6
              
              
  较复杂方法:4+2*10+1*100      5*10+6        0 
                 4              2+6+5*10      1 
                 4                2+6         1+5 
   */ 
   
             
        //下标:  6      5       4       3       2     1       0
      // t2元素:        2       3       5       4     8       6 
       //t1元素:                         4       3     1       2       
//第一次相乘结果:         *       *       *       *     *       *(i=0) 
//第二次相乘结果:  *      *       *       *       *     *         (i=1)       
//第三次。。。。。。               *       *       *              (i=2) 
//第四次 ..........               *       *                      (i=3)
//把四次结果相加放入t3数组中......... 
//再考虑进位。 
类似:
     243
    X 21
__________
     243
    486
——————
    5103

(编辑:李大同)

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

    推荐文章
      热点阅读