• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
scorpiorax
博客园    首页    新随笔    联系   管理    订阅  订阅
高精度除法

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.      输出整数商

posted on 2018-03-10 00:58  scorpiorax  阅读(322)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3