ZOJ 1086Octal Fractions undone

来源:互联网 发布:英语阅读理解关于网络 编辑:程序博客网 时间:2024/05/17 02:04
//1086Octal Fractions#include <iostream>#include <stdio.h>#include <string>#define FILE_DEBUG#ifdef FILE_DEBUG#include <fstream>#endifusing namespace std;int main(int argc, char *argv[]){#ifdef FILE_DEBUGifstream fin;fin.open("input.txt");cin.rdbuf(fin.rdbuf()); // assign file's streambuf to cin#ifdef _C_LAN_freopen("input.txt", "r", stdin);#endif#endif#ifdef FILE_DEBUGofstream fout;fout.open("output.txt");cout.rdbuf(fout.rdbuf()); // assign file's streambuf to cout#ifdef _C_LAN_freopen("output.txt", "w", stdout);#endif#endif      const int CVT_CNST[10][4] = {{0, 0, 0, 0}, {0, 1, 2, 5}, {0, 2, 5, 0}            , {0, 3, 7, 5}, {0, 5, 0, 0}, {0, 6, 2, 5}, {0, 7, 5, 0}            , {0, 8, 7, 5}, {1, 0, 0, 0}, {1, 1, 2, 5}};      string oct, dec;      long oct_ptr, dec_ptr;      while (cin >> oct && cin.eof() == NULL)      {            oct_ptr = dec_ptr = 0;            dec.clear();            for (int i = 0; i < 100; i ++)                dec.append("0");            while (oct_ptr < oct.size())            {                  for (int i = 0; i < 4; i ++)                  {                      dec[dec_ptr + i] += CVT_CNST[oct.at(oct_ptr) - '0'][i];                  }                  oct_ptr ++;            }            cout << dec << endl;      }    return 0;}
原创粉丝点击