zoukankan      html  css  js  c++  java
  • 洛谷P1530 分数化小数 Fractions to Decimals

    题目描述

    写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式。 如果小数有循环节的话,把循环节放在一对圆括号中。

    例如, 1/3 =0.33333333写成0.(3), 41/333 = 0.123123123...写成0.(123), 用xxx.0 等表示整数。 典型的转化例子:

    1/3 = 0.(3)
    22/5 = 4.4
    1/7 = 0.(142857)
    2/2 = 1.0
    3/8 = 0.375
    45/56 = 0.803(571428)
    PROGRAM NAME fracdec

    输入输出格式

    输入格式:

    单独的一行包括被空格分开的N和D(1 <= N,D <= 100000)。

    输出格式:

    按照上面规则计算出的小数表达式.如果结果长度大于76,每行输出76个字符.

    输入输出样例

    输入样例#1: 复制
    45 56
    输出样例#1: 复制
    0.803(571428)

    说明

    翻译来自NOCOW

    USACO 2.4

    ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

    思路是模拟除法竖式,当有余数与之前的相同时,之前余数作为被除数算出的商的位置直到算出这个余数的商的位置就是这个小数的循环节。最后不要忘记76个字符换一行,包括整数部分、括号和小数点。

     1 #include<iostream>
     2 using namespace std;
     3 string st;
     4 int n,d,t,ys[100001],f=999999999,s,tt;
     5 int main()
     6 {
     7     cin>>n>>d;
     8     t=n/d;
     9     while(1)
    10     {
    11         st=(char)(t%10+'0')+st;
    12         t/=10;
    13         if(!t)
    14             break;
    15     }
    16     st+='.';
    17     n%=d;
    18     while(1)
    19     {
    20         if(ys[n])
    21         {
    22             f=ys[n];
    23             break;
    24         }
    25         else
    26             ys[n]=st.length();
    27         n*=10,t=n/d;
    28         st+=t+'0';
    29         n%=d;
    30         if(!n)
    31             break;
    32     }
    33     if(f!=999999999)
    34         st+=')';
    35     for(int i=0;i<st.length();i++)
    36     {
    37         if(i==f&&!tt)
    38             i--,tt=1,cout<<'(';
    39         else
    40             cout<<st[i];
    41         s++;
    42         if(s%76==0)
    43             cout<<endl;
    44     }
    45     return 0;
    46 }
    代码
  • 相关阅读:
    建立自己的开发知识库?分享制作电子书的经验
    海量Office文档搜索
    为什么要检测数据库连接是否可用
    多年的.NET开发,也只学会了这么几招
    总结一下ERP .NET程序员必须掌握的.NET技术
    菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)
    软件公司为什么要加密源代码
    .NET开发中经常用到的扩展方法
    在Win8 Mertro 中使用SQLite
    SQLite
  • 原文地址:https://www.cnblogs.com/frank06/p/10339075.html
Copyright © 2011-2022 走看看