高精度除法

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