• 小数第n位


    小数第n位

    问题描述
      我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
      如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。


      本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。
    输入格式
      一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)
    输出格式
      一行3位数字,表示:a除以b,小数后第n位开始的3位数字。
    样例输入
    1 8 1
    样例输出
    125
    样例输入
    1 8 3
    样例输出
    500
    样例输入
    282866 999000 6
    样例输出
    914

    Algorithm

    模拟一下除法,但是如果直接一个个相除,时间复杂度会过高,此时应该想办法加速:每次循环后乘以10的n次方,同时小数快速前进n位!


    AC

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     // 一定要用long long类型 
     8     long long a, b, n;
     9     while(cin>>a>>b>>n)
    10     {
    11         while(n -10 > 0)
    12         {
    13             a *= 1e10;    // 快速逼近 
    14             a %= b;
    15             n -= 10;
    16         }
    17         for(int i=1;i<n+3;i++){
    18             a *= 10;
    19             if(i >= n)
    20                 cout<<a/b;
    21             a %= b;
    22         }
    23         cout<<endl;
    24     }
    25     return 0;
    26 }
    View Code

  • 相关阅读:
    抽象
    数据处理—异常值处理
    数据处理—数据连续属性离散化
    数据处理—缺失值处理
    数据处理—归一化
    数据特征—正态性检验
    数据特征—相关性分析
    数据分析—统计分析
    数据特征—帕累托分析
    特征分析—对比分析
  • 原文地址:https://www.cnblogs.com/mabeyTang/p/10250436.html
Copyright © 2020-2023  润新知