问题类型:小数,进制转换。
03pie’s solution for [POJ-1131]:
问题链接
#include <iostream>
#include <cstring>
using namespace std; const int BASE10 = 10;
const int BASE8 = 8;
const int MAXN = 1024;
char s[MAXN];
int ans[MAXN];
int main(void)
{ while(cin >> s) { memset(ans, 0, sizeof(ans)); int lens = 0; int len = strlen(s); for(int i=len-1; i>1; i--) { int digit = s[i] - '0'; int j = 0,k = 0; while(j<lens || digit) { digit = digit * BASE10 + ans[j++]; ans[k++] = digit / BASE8; digit %= BASE8; } lens = k; } cout<< s << " [" << BASE8 << "] = 0." ; for(int i=0; i<lens; i++) cout << ans[i]; cout << " [" << BASE10 << "]" << endl; } return 0;
}