코드로 된 입력을 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; }
댓글 없음:
댓글 쓰기