问题 A: 二哈学A+B
时间限制: 1 Sec 内存限制: 128 MB提交: 69 解决: 26
[ 提交][ 状态][ 讨论版]
题目描述
二哈在ACM协会结识了一位外语学院的同学,她也喜欢编程,她想让二哈写了一个A+B的程序,两个小于100的正整数A和B,计算A+B,并且结果以二进制的形式输出。不过这个A+B有点特殊,A和B的每一位数字由对应的英文单词给出
输入
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出
输出
对每个测试用例输出1行,即A+B的值,结果以二进制输出。
样例
输入
one + two = three four + five six = zero seven + eight nine = zero + zero =
样例输出
11 1011010 1100000
解析:对于这个题就是一个简单进行计算的题,用字母进行转换成数字,然后在计算他们的和,之后进行转换
二进制就行了。这个简单在他的数值的范围太小,要是进行大数的运算,就难
#include<stdio.h> #include<string.h> char a[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; int main(){ while(1){ char b[20]; int c[10]={10}; int cc[10]={10}; int k=0,flag=0; int z=0; while(scanf("%s",b)){ for(int i=0;i<10;i++){ if(strcmp(a[i],b)==0) if(flag==0) c[k++]=i; else cc[z++]=i; } if(strcmp(b,"+")==0) flag=1; if(strcmp(b,"=")==0) break; } int sum1; int sum2; if(k==2) sum1=c[0]*10+c[1]; else sum1=c[0]; if(z==2) sum2=cc[0]*10+cc[1]; else sum2=cc[0]; if(sum1==0&&sum2==0) return 0; int sum=sum1+sum2; int ans[20],num=0; do{ ans[num++]=sum%2; sum=sum/2; }while(sum!=0); for(int i=num-1;i>-1;i--) printf("%d",ans[i]); printf("\n"); } }