题目链接:http://codevs.cn/problem/3118/

为了做一道名为国王游戏的贪心,我跑来学习了高精度除法。。。。相传,高精度除法是高精度四个基本运算最难的

但事实上,高精度除法可以看成其他高精度的组合。。。

我们班一位大佬告诉我,对于高精度除法这类的题,他一直都是二分出这个商,然后高精度乘法来check一下。。。。

当然这是方法之一。。。我在这道题用的方法是高精度减法来做高精度除法

【步骤】

1.找到除数与被除数相差的位数并记录下。。。设相差了x位,则除数与被除数的商最大为x+1位数。。。这个结论举个例子就知道了

2.然后我们从x+1位开始做。。让除数扩大10^x倍,变成和被除数相同的位数,然后比较大小,如果能减去就减去,设减去了i次,则商的x+1位为i

在这个地方我们用例子来说明:

3886218:被除数
56322:除数

3886218<56322*100不执行减法操作。。。3886218>56322*100,执行减法,可以减去6个56322*10变成506898

506898>56322,并且可以减去9个56322,变成0 ,所以商就是6*10+9,余数为0

说白了,高精度除法就是执行减法,看从被除数中最多可以减去多少个除数,所以高精度除法就是多次高精度减法

高精度除法模板:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<iostream>
  5. #include<queue>
  6. #include<cstdlib>
  7. #include<cmath>
  8. #define maxn 1005
  9. using namespace std;
  10.  
  11. int a1[maxn],a2[maxn],a3[maxn],a4[maxn];
  12. int len1,len2;
  13. char s1[maxn],s2[maxn];
  14.  
  15. int check(int a[],int b[]){
  16. if(a[]<b[])return ;
  17. if(a[]>b[])return ;
  18. for(int i=a[];i>=;i--){
  19. if(a[i]>b[i])return ;
  20. if(a[i]<b[i])return ;
  21. }
  22. return ;
  23. }
  24.  
  25. void _minus(int a[],int b[]){
  26. for(int i=;i<=a[];i++){
  27. if(a[i]<b[i]){
  28. a[i]+=;a[i+]--;
  29. }
  30. a[i]-=b[i];
  31. }
  32. while(a[a[]]==&&a[]>)//余数的位数
  33. a[]--;
  34. }
  35.  
  36. int main(){
  37. scanf("%s%s",s1+,s2+);
  38. len1=strlen(s1+);
  39. len2=strlen(s2+);
  40. for(int i=;i<=len1;i++)a1[i]=s1[len1-i+]-'';
  41. for(int i=;i<=len2;i++)a2[i]=s2[len2-i+]-'';
  42. a1[]=len1;a2[]=len2;
  43. a4[]=len1-len2+;
  44. for(int i=a4[];i>;i--){
  45. memset(a3,,sizeof(a3));
  46. for(int j=;j<=a2[];j++){
  47. a3[j+i-]=a2[j];//移i位
  48. }
  49. a3[]=a2[]+i-;
  50. while(check(a1,a3)){
  51. a4[i]++;_minus(a1,a3);
  52. }
  53. }
  54. while(a4[a4[]]==&&a4[]>)//商的位数
  55. a4[]--;
  56. for(int i=a4[];i>=;i--){
  57. printf("%d",a4[i]);
  58. }
  59. /*
  60. 3886218
  61. 56322
  62. out:69
  63. */
  64. }

[codevs3118]高精度除法<高精度>的更多相关文章

  1. 中石油-高精度除法-java版

    问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec  内存限制: 512 MB提交: 19  解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法 ...

  2. 使用java求高精度除法,要求保留N位小数

    题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 import java.math.BigDecimal; import java.util.Scanner; pu ...

  3. POJ 2325 Persistent Numbers#贪心+高精度除法

    (- ̄▽ ̄)-* 这道题涉及高精度除法,模板如下: ]; ];//存储进行高精度除法的数据 bool bignum_div(int x) { ,num=; ;s[i];i++) { num=num*+ ...

  4. 第三周PTA笔记 回文数+A-B(大数减法)+高精度除法+数楼梯(大数加法)

    回文数 对于一个自然数n,若将n的各位数字反向排列所得的数n1与n相等,则称n为回文数,例如2332. 若给定一个N( 2<=N<=16)进制数M(M的长度在一百位以内),如果M不是回文数 ...

  5. c++ 超大整数除法 高精度除法

    c++ 超大整数除法 高精度除法 解题思路 计算a/b,其中a为大整数,b为普通整数,商为c,余数为r. 根据手算除法的规则,上一步的余数记为r,则本次计算的被除数为t=r*10+被除数的本位数值a[ ...

  6. 【高精度】高精度分数[c++]

    [高精度]高精度分数 时间限制: 1 Sec 内存限制: 64 MB 题目描述 "人无远虑,必有近忧"是修罗王一直以来恪守的信条,为了以防万一,他在很久以前就将<魔法宝典&g ...

  7. 【高精度】高精度数除以低精度数I

    问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec  内存限制: 512 MB提交: 173  解决: 71[提交] [状态] [讨论版] [命题人:] 题目描述 修罗王聚集了庞大的 ...

  8. 【noi 2.6_9288】&【hdu 1133】Buy the Ticket(DP / 排列组合 Catalan+高精度除法)

    题意:有m个人有一张50元的纸币,n个人有一张100元的纸币.他们要在一个原始存金为0元的售票处买一张50元的票,问一共有几种方案数. 解法:(学习了他人的推导后~) 1.Catalan数的应用7的变 ...

  9. 华南理工大学“三七互娱杯”程序设计竞赛(重现赛)( HRY and array 高精度除法模板)

    题目链接:https://ac.nowcoder.com/acm/contest/874/D 题目大意:给你两个数列a和b然后对a可以进行排列,对b可以任意排列,问你sigma(a(i)*b(i))的 ...

随机推荐

  1. 一篇带你看懂Flutter叠加组件Stack

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Stack Stack组件可以将子组件叠加显示,根据子组件 ...

  2. Java 八种基本类型和基本类型封装类

    1.首先,八种基本数据类型分别是:int.short.float.double.long.boolean.byte.char:   它们的封装类分别是:Integer.Short.Float.Doub ...

  3. C++泛化双向链表

    泛型双向链表 双向链表(doublyLinkedList.h) /******************************************************************* ...

  4. echarts实现饼图及横向柱状图的绘制

    项目中需要绘制饼图,因此简单学习了下echarts的基本使用.head中引入js文件: <script src="/static/frame/echarts/echarts.min.j ...

  5. ABP开发框架前后端开发系列---(16)ABP框架升级最新版本的经验总结

    有一小段时间没有持续升级ABP框架了,最近就因应客户的需要,把ABP框架进行全面的更新,由于我们应用的ABP框架,基础部分还是会使用官方的内容,因此升级的时候需要把官方基础ABP的DLL进行全面的更新 ...

  6. 前端---css3优化

    一.视差滚动(经过优化后的代码) .front::before { content: ''; position: fixed; // 代替background-attachment width: 10 ...

  7. office一直提示配置进度与图标问题

    原来安装了wps office,广告太烦,于是卸载了wps安装Microsoft office 2010,安装完成后每次打开excel文件都要重新安装配置,修改注册表norereg和设置兼容模式都不行 ...

  8. oracle单机数据库搭建巨详细文档

    规划 环境:redhat6.9 安装包:p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip 数据 ...

  9. ubuntu 安装flask+nginx+gunicorn 待定

    第一步 先检查服务器环境   pip python3 mysql redis 能下就下,该升级就升级 第二步 如果你的flask程序在github上 请使用git clone 地址 下载下来(如果是私 ...

  10. vue控制台报错集锦

    1.ERROR in Cannot find module 'node-sass' 经常会出现node-sass没安装好的报错,没事,单独重新安装一下, 解决办法:npm install node-s ...