ZOJ 1205 Martian Addition
来源:互联网 发布:狂鼠伤害数据 编辑:程序博客网 时间:2024/06/05 03:00
ZOJ 1205 Martian Addition
面对着一道做了三个晚上才A掉的简单题,应该是什么心情呢?算了,希望花能开好。
代码和教训如下:
#include<stdio.h>#include<string.h>int main(){ int i,c[150],d[150],e[150],ma,mb,larger,f,g; char t,sum[150],a[150],b[150]; while(scanf("%s%s",a,b)!=EOF){ ma = strlen(a)-1; mb = strlen(b)-1; for(i = 0;i<=ma;i++){ if(a[i]>='0'&&a[i]<='9') continue; /////////////话说以后尽量写程序的时候重复的地方多写成函数,加油! else if(a[i]>='a'&&a[i]<='j') continue; else break; } /////////////这里一定要注意,因为输入可能有不合法字符的时候,读到不合法字符就可以默认为这个数字结束了 ma = i-1; for(i = 0;i<=mb;i++){ if(b[i]>='0'&&b[i]<='9') continue; else if(b[i]>='a'&&b[i]<='j') continue; else break; } mb = i-1; for(i=0;i<=130;i++){ ///////////这里千万要注意,数字的大小为150,那么这里的数字一定要小于他,教训!!!卡在这里好久!!! e[i] = 0; c[i] = 0; d[i] = 0; } for(i = 0;i<=ma/2;i++){ t = a[ma-i]; a[ma-i] = a[i]; a[i] = t; } for(i = 0;i<=mb/2;i++){ t = b[mb-i]; b[mb-i] = b[i]; b[i] = t; } for(i = 0;i<=ma;i++){ if(a[i]>='0'&&a[i]<='9') c[i] = a[i]-'0'; if(a[i]>='a'&&a[i]<='j') c[i] = a[i] - 'a'+10; } for(i = 0;i<=mb;i++){ if(b[i]>='0'&&b[i]<='9') d[i] = b[i]-'0'; if(b[i]>='a'&&b[i]<='j') d[i] = b[i] - 'a'+10; } larger = ma; if(ma<mb) larger = mb; for(i = 0;i<=larger;i++){ e[i] = e[i]+c[i]+d[i]; if(e[i]/20>0){ e[i+1] = e[i]/20; e[i] = e[i]%20; } } if(e[larger+1]>0){ larger++; } for(i = 0;i<=larger;i++){ if(e[i]<=9) sum[i] = '0'+e[i]-0; else sum[i] = 'a'+e[i]-10; } for(i = 0;i<=larger/2;i++){ t = sum[larger-i]; sum[larger-i] = sum[i]; sum[i] = t; } f = 0; g = 0; for(i = 0;i<=larger-1;i++){ if(sum[i]!='0'){ f = 1; break; } if(f==0){ //////这里是对最后的结果如果开头有 '0',要去掉,这个做最简便,不然如果在收进数据的时候判断,情况太复杂 g++; //////////包括开头带0,真个大数字不全为0,也有可能整个大数字是一串0或者是一个单独的0,处理繁琐 } } larger = larger-g; for(i = 0;i<=larger;i++){ sum[i] = sum[i+g]; } for(i = 0;i<=larger;i++){ printf("%c",sum[i]); } printf("\n"); } return 0;}
- ZOJ 1205 Martian Addition
- zoj 1205 Martian Addition
- zoj 1205 Martian Addition
- ZOJ 1205 Martian Addition
- ZOJ 1205 Martian Addition
- ZOJ 1205 Martian Addition
- zoj 1205 Martian Addition
- ZOJ 1205 Martian Addition
- ZOJ 1205: Martian Addition
- ZOJ 1205 Martian Addition
- zoj 1205 Martian Addition
- Solution of ZOJ 1205 Martian Addition
- ZOJ Problem Set - 1205 Martian Addition
- zoj 1205.Martian Addition
- ZOJ 1205 Martian Addition (20进制加法)
- Martian Addition
- fjnu 1865 Martian Addition
- 【ACM】Martian Addition
- 【练习01】 简单题(1)1006
- Linux Kernel 2.6进程调度的分析(转)
- Android-sharedUserId数据权限!!!!!!!!!!
- Android 颜色(RGB)对照表
- 用指针作函数参数
- ZOJ 1205 Martian Addition
- C语言 单引号和双引号的区别
- Ubuntu12.04系统下写你的第一个Django1.5应用(三)--view
- xml文件的jdom解析
- 自己整理的MBR数据结构
- eclipse 设置编码
- 揭秘 typedef四用途与两陷阱
- 随机指标KDJ使用入门
- 远程连接服务器无法拷贝本地文件解决