1260 不一样的A+B
生活随笔
收集整理的這篇文章主要介紹了
1260 不一样的A+B
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1260?不一樣的A+B
Time Limit :?2000/1000 MS(Java/Others)?| Memory Limit :65536/32768 KB(Java/Others)
Submits :?641?| Solved :?357
Description
讀入兩個小于100的正整數A和B,計算A+B的值并輸出。
需要注意的是:整數A和B的每一位數字由對應的英文單詞給出。如整數34表示為three four。
Input
測試輸入包含若干測試用例,每個測試用例占一行,格式為"A + B =",相鄰兩字符串有一個空格間隔。當A和B同時為0時輸入結束,此時的結果不要輸出。Output
對每個測試用例輸出一行結果,即A+B的值,用數值形式輸出。
Sample Input
one + two =three four + five six =zero seven + eight nine =zero + zero =Sample Output
39096HINT
Source
浙江大學研究生復試題目(2005) 最開始寫的是c版本是很早之前寫的在這里也粘貼一下: #include<stdio.h> #include<string.h> #include<math.h> int main() {char plus[1]="+",ch[105],c[105],div[105][105],b[105][105]={"zero","one","two","three","four","five","six","seven","eight","nine"};int select=0,j,l=0,ii=0,blank=0,q=0,i,A=0,B=0,temp=0,num[100],count[100],k=0;while(gets(ch)!=NULL){select=0,l=0,ii=0,blank=0,q=0,A=0,B=0,temp=0,num[100],count[100],k=0;int len=strlen(ch);for(i=0;i<len;i++){q=0;c[ii]=ch[i];//利用空格對輸入總的字符串進行單個數字英文進行拆分if(ch[i]=='+')select=1;//為了區分+前后的兩個數,方便利用不同的數字數組進行存儲if(ch[i]==' '){q=1;//用來對ii的首項元素下標賦初0c[ii]='\0';for(j=0;j<10;j++){if(strcmp(b[j],c)==0&&select==0)//字符串和英文字母比較{num[l]=j;//用來統計各個數字l++;//1、統計數字的個數 2、為了便于計算總合}if(strcmp(b[j],c)==0&&select==1){count[k]=j;//和上面同理k++;}}strcpy(div[blank],c);//對字符串blank++;if(blank>0){ii=0;}}if(q==0)ii++;}for(i=0;i<l;i++){int y=pow(10,l-i-1);A+=num[i]*y;}for(i=0;i<k;i++){int g=pow(10,k-i-1);B+=count[i]*g;}if(A+B!=0)printf("%d\n",A+B);elsebreak;}return 0; }今天寫的java版本代碼用了map集合更簡單點:package com.test;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set;public class test2 {public static void main(String[] args){Map<String, Integer> map=new HashMap<String, Integer>();map.put("zero",0);map.put("one",1);map.put("two",2);map.put("three",3);map.put("four",4);map.put("five",5);map.put("six",6);map.put("seven",7);map.put("eight",8);map.put("nine",9);Scanner sc=new Scanner(System.in);String str=null;str=sc.nextLine();while(true){int[] a=new int[1000];int[] b=new int[1000];int c=0;String[] strs=str.split(" ");int m = 0,l=0,l1=0;for(int i=0;i<strs.length;i++){if(strs[i].toString().equals("+")){m=i;break;}if(!(strs[i].toString().equals(""))){a[l++]=map.get(strs[i].toString());}}for(int i=m+1;i<strs.length;i++){if(strs[i].toString().equals("=")){m=i;break;}b[l1++]=map.get(strs[i].toString());}int x=0,y=0;for(int i=0;i<l;i++){x+=(int) (a[i]*Math.pow(10, (l-i-1)));}for(int i=0;i<l1;i++){x+=(int) (b[i]*Math.pow(10, (l1-i-1)));}if(x==y&&x==0) break;System.out.println(x+y);str=sc.nextLine();x=y=l=l1=0;}} }
總結
以上是生活随笔為你收集整理的1260 不一样的A+B的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 串的基本操作
- 下一篇: 查找练习 hash——出现过的数字