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

hdu1002 大数运算

发布时间:2020-12-14 02:53:11 所属栏目:大数据 来源:网络整理
导读:题目要求: 简而言之就是输入任意两数进行求和,因为数字很大,所以直接求和显然不行,所以想到了用字符串来做(模拟加法运算)(也可以用数组做) //格式就不细说了 #include stdio.h#include string.h int change ( char a [ 1010 ], char b [ 1010 ]) { c
题目要求:

简而言之就是输入任意两数进行求和,因为数字很大,所以直接求和显然不行,所以想到了用字符串来做(模拟加法运算)(也可以用数组做)
//格式就不细说了
#include <stdio.h>
#include <string.h>
int change(char a[1010],char b[1010]) { char c[1010]; int i,j; int max=(strlen(a)>=strlen(b))?strlen(a):strlen(b); if(strlen(a)>=strlen(b)) { for(i=strlen(a)-1,j=strlen(b)-1;i>=0;i--,j--) { if(j>=0)
            c[i]=b[j]; else
            c[i]='0';// 这一步很关键,将长度较小的字符串赋值给另一个字符串,较短的字符串空位置放字符'0'这样就能使两个相加的字符串对齐了; }
      for(i=max-1;i>=0;i--) { if((a[i]+c[i]-48)<='9') {
            a[i]=a[i]+c[i]-48; // -48 相当于 -'0' 因为字符0的asc码值为48; } else {
            	a[i]=a[i]+c[i]-48-10; 如果a[i]+c[i]-48的值大于'9'那么再减掉10 就相当于进位后该位的值;   if(i-1>=0)
            	a[i-1]+=1;   if(i-1==-1)
          	  printf("1");//当字符串运算到第一位是也就是a[0]+c[0]可能会出现进位,但字符串已经没有空位置,考虑到两个数加法最多进1,所 //这种情况就先输出'1'; } }
        printf("%sn",a); } if(strlen(b)>strlen(a)) { for(i=strlen(b)-1,j=strlen(a)-1;i>=0;i--,j--)//同上 { if(j>=0)
            c[i]=a[j]; else
            c[i]='0'; } for(i=max-1;i>=0;i--) { if(b[i]+c[i]-48<='9')
            b[i]=b[i]+c[i]-48; else {
            b[i]=b[i]+c[i]-48-10; if(i-1>=0)
            b[i-1]+=1; if(i-1==-1)
            printf("1"); } }
        printf("%sn",b); } } int main() { int i=0,n;
    scanf("%d",&n); while(n--) { char a[1010]; char b[1010]; if(i>=1)
        printf("n");//控制格式, 每两个Case之间有空行,最后一行没有
        scanf("%s",a);
        scanf("%s",b);
        printf("Case %d:n",++i);
        printf("%s + %s = ",a,b);
        
        change(a,b); } return 0; }
测试数据 
99900 00999
00999 99900
000 0000
0 0
1000 0001
9999 1
1 9999
这几个数据和样例都过了,应该可以AC了
 以上测试数据由
ultimater的博客提供,下面是他的博客hdu1002博客链接
http://blog.csdn.net/ultimater/article/details/7884836

(编辑:李大同)

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

    推荐文章
      热点阅读