superman

聚精会神搞建设 一心一意谋发展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Section 2.4 - Fractions to Decimals

Posted on 2009-04-24 10:31 superman 阅读(85) 评论(0)  编辑 收藏 引用 所属分类: USACO
 1 #include <map>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 string int2str(int n)
 7 {
 8     if (n == 0)
 9         return string("0");
10     string s;
11     while (n)
12     {
13         s += (n % 10 + '0');
14         n /= 10;
15     }
16     for (unsigned i = 0; i < s.size() / 2; i++)
17         swap(s[i], s[s.size() - i - 1]);
18     return s;
19 }
20 
21 int main()
22 {
23     freopen("fracdec.in""r", stdin);
24     freopen("fracdec.out""w", stdout);
25 
26     int a, b, q, r;
27     map <intint> rRec;
28 
29     while (cin >> a >> b)
30     {
31         string ans = int2str(a / b) + '.';
32 
33         a = a % b;
34         rRec[a % b] = ans.size();
35 
36         int cnt = ans.size() + 1;
37         while (true)
38         {
39             a = a * 10;
40             q = a / b;
41             r = a % b;
42 
43             ans += (q + '0');
44 
45             if (r == 0 || rRec[r])
46                 break;
47 
48             rRec[r] = cnt++ ;
49 
50             a = r;
51         }
52 
53         if (r)
54         {
55             ans += ')';
56             ans.insert(rRec[r], "(");
57         }
58 
59         for (int i = 0; i < ans.size(); i++)
60         {
61             cout << ans[i];
62             if ((i + 1% 76 == 0)
63                 cout << endl;
64         }
65 
66         cout << endl;
67 
68         rRec.clear();
69     }
70 
71     return 0;
72 }
73 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理