코드로 된 입력을 3자리씩 끊어서 0~9 중 해당하는 숫자로 변환한 후 연산하고 다시 코드로 변환했다.
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
string num[]={"063", "010", "093", "079", "106",
"103", "119", "011", "127", "107"};
int ori[127];
int main(){
int i, j, A, B, isA, pdec, dec, r;
for(i=0; i<10; ++i) ori[atoi(num[i].c_str())]=i;
string s;
while(cin >> s){
if( !s.compare("BYE") ) break;
A = B = isA = 0;
for(i=s.length()-2, pdec=1; i>1;){
if(s[i]=='+'){ isA=1; --i; pdec=1; continue; }
int sum = (s[i]-'0')+(s[i-1]-'0')*10+(s[i-2]-'0')*100;
if(isA) A += ori[sum]*pdec;
else B += ori[sum]*pdec;
pdec *= 10;
i -= 3;
}
cout<< s;
char ret[11]={};
sprintf(ret, "%d", A+B);
for(i=0; i<strlen(ret); ++i) cout<< num[ret[i]-'0'];
cout<<'\n';
}
return 0;
}
댓글 없음:
댓글 쓰기