zoukankan      html  css  js  c++  java
  • 求循环小数的表示以及循环节长度

    问题:

      输入整数a和b,输出a/b的循环小数表示以及其循环节长度。例如 a=5 b=43 小数表示为0.(116279069767441860465),循环节长度为21;

    分析: 

      长除法的计算过程

        ①mod = a%b;

        ②小数 = (mod*10) / b;

        ③mod = (mod*10)%b;

      循环②③步,当出现重复的余数的时候,也就是循环节出现了

    注意事项:

      当循环上述2、3步骤时,出现余数为零的情况,即计算结果不是循环小数时,直接输出索引值,循环节长度为0。

    C++实现:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main() {
     5     int a, b, t, k;
     6     cin >> a >> b;
     7     int index = 0;
     8     t = a%b;
     9     if (t ==0) {
    10         cout << index << " " << index << endl;
    11         return 0;
    12     }
    13     int flag[10000] = {0};
    14     memset(flag,-1,1000);
    15     k =0;
    16     int length = 0;
    17     while (true) {
    18         t = (t*10)%b;
    19         if (t == 0) {
    20             index = ++k;
    21             length = 0;
    22             break;
    23         }
    24 
    25         if(flag[t] >= 0) {
    26             index = flag[t];
    27             length = k - index;
    28             break;
    29         }
    30         flag[t]=k;
    31         k++;
    32     }
    33 
    34     cout << index << " " << length << endl;
    35     return 0;
    36 }

        

    专注搬砖,擅长搬砖砸自己的脚~~~ Email: ltwbuaa@163.com
  • 相关阅读:
    [BZOJ3195][Jxoi2012]奇怪的道路
    [codeforces696B]Puzzles
    [codeforces464D]World of Darkraft
    [COGS1000]伊吹萃香 最短路
    [BZOJ4653][NOI2016]区间 贪心+线段树
    [BZOJ4540][HNOI2016]序列 莫队
    [BZOJ4870][Shoi2017]组合数问题 dp+矩阵乘
    Loj 2005 相关分析
    Loj 114 k大异或和
    bzoj 2212 Tree Rotations
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9563915.html
Copyright © 2011-2022 走看看