注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

高精度的加法*乘法  

2014-03-15 16:45:41|  分类: ACM学习小结 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
加法:
include<stdio.h>
#include<string.h>
#define Max 200
int an1[Max+10];
int an2[Max+10];
char line1[Max+10];
char line2 [Max+10];
int main()
{
scanf("%s",line1);
scanf("%s",line2);
int i,j;
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
int len1=strlen(line1);
for(j=0,i=len1-1;i>=0;i--)
{
an1[j++]=line1[i]-'0';
}
int len2=strlen(line2);
for(j=0,i=len2-1;i>=0;i--)
{
an2[j++]=line2[i]-'0';
}
for(i=0;i<Max;i++)
{
an1[i]+=an2[i];////逐位相加
if(an1[i]>10)
{
an1[i]-=10;
an1[i+1]++;
}
}
for(i=Max;(i>=0)&&(an1[i]==0);i--);//对于最高位的清零功能;
if(i>=0)
{
for(;i>=0;i--)
{
printf("%d",an1[i]);
}
}
else 
 printf("0");
return 0;
}
乘法:
#include<stdio.h>
#include<string.h>
#define Max 200
int main()
{
int i,j;
int len1,len2;
int a[Max+10],b[Max+10],c[Max*2+10];
char str1[Max+10],str2[Max+10];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
gets(str1);
gets(str2);
len1=strlen(str1);
len2=strlen(str2);
for(j=0,i=len1-1;i>=0;i--)
{
a[j++]=str1[i]-'0';
}
for(j=0,i=len2-1;i>=0;i--)
{
b[j++]=str2[i]-'0';
}
//第二个数乘以第一个数;
for(i=0;i<len2;i++)
    {
for(j=0;j<len1;j++)
{
c[i+j]+=b[i]*a[j];//先乘起来,后面统一进位
}
for(i=0;i<Max*2;i++)
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
for(i=Max*2;(i>=0)&&(c[i]==0);i--);//跳过高位的0
if(i>=0)
{
for(;i>=0;i--) 
{
printf("%d",c[i]);
}
printf("\n");
}
else 
{
printf("0\n");
}
 
return 0;
}
  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017