zoukankan      html  css  js  c++  java
  • 高精度除法

    1128: 高精度高精度除法

    题目描述

    计算n/m的值,设n,m为整数,n的长度小于等于1000,m的长度小于等于15位,要求精确到小数点后500位。如果整数位为零,则省略小数点前的零

    输入

    两行,每行一个整数

    输出

    一行,保留500位小数的实数。

    样例输入

    355

    113

    样例输出

    3.14159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336

     1 #include<cstdio>
     2 #include<cstring>
     3 char n[1005];
     4 long long temp,m;
     5 int main()
     6 {
     7     bool flag=0;
     8     scanf("%s%lld",n,&m);  //先输入n为字符串,然后输入m被除数
     9     for (int i=0;i<strlen(n);i++)//整数部分的运算 
    10     {
    11         temp=temp*10+n[i]-'0';  //temp表示前一位余下来的加上这一位正常的那个数进行运算 
    12         if (temp/m!=0) //直到除出来的商有意义则进行运算 
    13         flag=1;
    14         if (flag==1)
    15         printf("%d",temp/m);//留下整除出来的商 
    16         temp%=m;//把余数保留下来进行下一次除法运算 
    17     }
    18     printf(".");
    19     for (int i=1;i<=500;i++)//500位小数部分的运算 
    20     {
    21         temp*=10;//首先每一次都要给余数乘十进行运算 
    22         printf("%d",temp/m);//然后把答案输出 
    23         temp%=m;//保留余数 
    24     }
    25     return 0;
    26 }

    ***高精度除法

    1.      使被除数一位一位的移动去除以除数

    2.      保留整数商

    3.      留下余数进行下一次运算

    4.      小数部分的下一次运算的被除数等于上一位余数的十倍

    5.      输出整数商

  • 相关阅读:
    双指针算法_最长连续不重复子列长度
    前缀和_子矩阵的和
    前缀和
    高精度算法_大数除以小数
    高精度算法_大数乘小数
    高精度算法_大数相减
    高精度算法_大数加法
    一维差分矩阵
    二维差分矩阵
    整数二分
  • 原文地址:https://www.cnblogs.com/rax-/p/8537131.html
Copyright © 2011-2022 走看看