zoj 1205.Martian Addition
来源:互联网 发布:python exit code非0 编辑:程序博客网 时间:2024/06/05 16:23
Martian Addition
#include <fstream>#include <iostream>#include <vector>//向量#include <string>//字符容器#include <algorithm>//算法using namespace std;int main(int argc, char* argv[]){//ifstream cin("aaa.txt");string sa,sb,t;vector<int>v;int i;int a,b,sum;int flag;//进位标记while(cin>>sa>>sb){//初始化各种变量和容器flag=0;//没有进位v.clear();//清空结果向量sum=0;//两位数的和//反转两个字符容器reverse(sa.begin(),sa.end());reverse(sb.begin(),sb.end());//sa里放长串,sb里放短串if(sa.size()<sb.size()){t=sa;sa=sb;sb=t;}//从个位起,一位一位相加for(i=0;i<sa.size();i++){//0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19//0 1 2 3 4 5 6 7 8 9 a b c d e f g h i jif (sa[i]=='0')a=0;else if(sa[i]=='1')a=1;else if(sa[i]=='2')a=2;else if(sa[i]=='3')a=3;else if(sa[i]=='4')a=4;else if(sa[i]=='5')a=5;else if(sa[i]=='6')a=6;else if(sa[i]=='7')a=7;else if(sa[i]=='8')a=8;else if(sa[i]=='9')a=9;else if(sa[i]=='a')a=10;else if(sa[i]=='b')a=11;else if(sa[i]=='c')a=12;else if(sa[i]=='d')a=13;else if(sa[i]=='e')a=14;else if(sa[i]=='f')a=15;else if(sa[i]=='g')a=16;else if(sa[i]=='h')a=17;else if(sa[i]=='i')a=18;else if(sa[i]=='j')a=19;if(i>=sb.size())b=0;//已超过b串的最长一位else{if (sb[i]=='0')b=0;else if(sb[i]=='1')b=1;else if(sb[i]=='2')b=2;else if(sb[i]=='3')b=3;else if(sb[i]=='4')b=4;else if(sb[i]=='5')b=5;else if(sb[i]=='6')b=6;else if(sb[i]=='7')b=7;else if(sb[i]=='8')b=8;else if(sb[i]=='9')b=9;else if(sb[i]=='a')b=10;else if(sb[i]=='b')b=11;else if(sb[i]=='c')b=12;else if(sb[i]=='d')b=13;else if(sb[i]=='e')b=14;else if(sb[i]=='f')b=15;else if(sb[i]=='g')b=16;else if(sb[i]=='h')b=17;else if(sb[i]=='i')b=18;else if(sb[i]=='j')b=19;}sum=a+b+flag;//求两位的和if(sum>19){flag=1;//进位sum=sum-20;//保留位}else{flag=0;}v.push_back(sum);//保存保留位}if(flag==1)v.push_back(1);//输出结果for(i=v.size()-1;i>=0;i--){if(v[i]<10)cout<<v[i];else if(v[i]==10)cout<<"a";else if(v[i]==11)cout<<"b";else if(v[i]==12)cout<<"c";else if(v[i]==13)cout<<"d";else if(v[i]==14)cout<<"e";else if(v[i]==15)cout<<"f";else if(v[i]==16)cout<<"g";else if(v[i]==17)cout<<"h";else if(v[i]==18)cout<<"i";else if(v[i]==19)cout<<"j";}cout<<endl;}return 0;}
#include <stdio.h>#include <string.h>char* NUMS="0123456789abcdefghij";/*分别是读取的输入行,加数a,b,计算结果c */char line[105],a[105],b[105],c[105];/*字符换算为实际数值,例如'a'->10,'b'->11*/int CharToVal(char c){ return strchr(NUMS, c)-NUMS;}/*解析输入*/void CopyNum(char* dest, const char* line){ int i,len=strlen(line); for(i=0;i<len;i++) { dest[i]=CharToVal(line[len-1-i]); }}/*打印加法结果,注意结尾如果为0也要打印0*/void PrintResult(){ int i=101; while(c[i]==0) i--; if(i<0) i=0; /*非常重要,可以保证至少要打印一个0。*/ for(;i>=0;i--) { printf("%c", NUMS[c[i]]); } printf("\n");}/*做加法: c=a+b; */void Add(){ int i; int k=0,sum;/*进位的数值*/ for(i=0;i<102;i++) { sum = a[i] + b[i] + k; c[i] = sum%20; k = sum/20; }}int main(){ while(scanf("%s",line)!=EOF && strcmp(line,"END")!=0) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); CopyNum(a,line); /*获取加数A*/ scanf("%s",line); CopyNum(b,line); /*获取加数B*/ Add(); /*C=A+B;*/ PrintResult(); /*打印出结果*/ } 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
- zoj 1205 Martian Addition
- Solution of ZOJ 1205 Martian Addition
- ZOJ Problem Set - 1205 Martian Addition
- Martian Addition
- ZOJ 1205 Martian Addition (20进制加法)
- fjnu 1865 Martian Addition
- 【ACM】Martian Addition
- HDU 1385 Minimum Transport Cost(最短路,打印字典序路径)
- 笔记:js对象
- 白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)
- 实习日志(5):Flex页面“跳转”
- (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
- zoj 1205.Martian Addition
- 2.最基础Linux设备驱动程序:HelloWorld
- reason: ‘Could not instantiate class named NSLayoutConstraint’
- 黑马程序员 集合框架(二)
- C和C++笔试面试题汇总
- Ubuntu下LaTeX中文环境配置
- Oracle事务隔离级别
- HDU 1224 Free DIY Tour
- 一见钟情!Java闭包