【高精度】高精度除以高精度 C++题解
题目描述:
输入两个正整数,求它们的商和余数。
分析:
高精度除以高精是用减法模拟除法,对被除数的每一位都减去除数,一直减到当前位置的数字小于除数。
代码:
#include<bits/stdc++.h>
using namespace std;
#define MAX 105
int a[MAX],b[MAX],c[MAX],d,i;
void init(int a[]){string s;cin>>s;a[0]=s.length();for(int i=1;i<=a[0];i++) a[i]=s[a[0]-i]-'0';
}
void print(int a[]){int i;if(a[0]==0){cout<<0<<endl;return;}for(i=a[0];i>0;i--) cout<<a[i];cout<<endl;return;
}
int compare(int a[],int b[]){//比较a和b的大小关系,若a>b则返回1,若a<b则返回-1,若a=b则返回0 int i;if(a[0]>b[0]) return 1;if(a[0]<b[0]) return -1;for(i=a[0];i>0;i--){if(a[i]>b[i]) return 1;if(a[i]<b[i]) return -1;}return 0;
}
void jian(int a[],int b[]){int flag,i;flag=compare(a,b);if(flag==0){a[0]=0;return;}if(flag==1){for(i=1;i<=a[0];i++){if(a[i]<b[i]){//借位 a[i+1]--;a[i]+=10;}a[i]-=b[i]; }while(a[0]>0&&a[a[0]]==0) a[0]--;//修正a的位数return; }
}
void numcpy(int p[],int q[],int det){for(int i=1;i<=p[0];i++) q[i+det-1]=p[i];q[0]=p[0]+det-1;
}
void chugao(int a[],int b[],int c[]){int i,tmp[MAX];c[0]=a[0]-b[0]+1;for(i=c[0];i>0;i--){memset(tmp,0,sizeof tmp);numcpy(b,tmp,i);while(compare(a,tmp)>=0){c[i]++;jian(a,tmp);}}while(c[0]>0&&c[c[0]]==0) c[0]--;return;
}
int main(){memset(a,0,sizeof a);memset(b,0,sizeof b);memset(c,0,sizeof c);init(a);init(b);chugao(a,b,c);print(c);print(a);return 0;
}
【高精度】高精度除以高精度 C++题解相关推荐
- 高精度除法:高精度除以低精度
本编仅限于除数是低精度的情况!!! 基本思想 一位数一位数地与除数相除,余数乘10加入下一位上 举例说明 148除以6 首先用1除以6,得0,余1 再用(1x10+4)除x以6,得2,余2(1是上一位 ...
- 高精度除法(高精度除以高精度)
#include <bits/stdc++.h> using namespace std; int a[101],b[101],c[101],d,i; void shuru(int a[] ...
- python高精度加法_14.高精度加法
作者:X3B0A1 1.0 问题 在我们熟悉的数据类型中,能够储存的最大的数也只是longlong的范围. 虽然有些编译器也提供__int128类型,但是最多也只能表示40位左右的数,大小依然有限,而 ...
- java求小数高精度_浅谈Java中的高精度整数和高精度小数
在实际编码中,会遇到很多高精度的事例,比如,在计算金钱的时候就需要保留高精度小数,这样计算才不会有太大误差: 在下面的代码中,我们验证了,当两个float型的数字相加,得到的结果和我们的预期结果是有误 ...
- (压位)高精度乘法,高精度加法,高精度减法,高精度除法
大值 乘 大值: 题目链接:https://www.luogu.com.cn/problem/P1303 # include <iostream> # include <string ...
- 高精度阶乘和 高精度算法(c语言)
以前刷oj的时候 遇见一个题目 也就是输入一个数字 判断阶乘和 用高精度计算出S=1!+2!+3!+-+N!(N≤50),其中"!"表示阶乘, 例如:5!=5*4*3*2*1.输入 ...
- matlab高精度工具箱,[转载]高精度捷联惯性导航系统Matlab工具箱
工具箱主要功能: 1) 姿态向量.四元数.矩阵.滤波算法等各类子程序 2) 圆锥运动仿真 划船运动仿真 惯性器件随机误差仿真 3) Kalman滤波初始对准 基于惯性系初始对准 罗经法初始对准 大方位 ...
- 求高精度幂 java_JAVA高精度_求高精度幂
要想用Java轻快的水过这道题,要先了解下JAVA.math中的几个方法 1.Java.math.BigDecimal.toPlainString() 返回此BigDecimal的字符串表示形式不带指 ...
- 高精度算法(大整数的加减乘除运算)
1.什么是高精度数 在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字.一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加.减.乘.除 ...
最新文章
- chrome开发者工具功能拾遗:Sources面板篇
- word存为html图片有两个,如何批量保存Word图片?另存为Word多个图片的方法
- java获取URL参数(get方式,并且你不知道他末尾有什么参数名)
- SAP Fiori s2 controller init
- 《深入理解JVM.2nd》笔记(三):垃圾收集器与垃圾回收策略
- makefile深度学习(一个工程实例来学习 Makefile)
- 阿里云提示微擎被挂图片木马详解
- STM32F103:三.(2)红外接收
- 【自】数据库系统原理(三)——测试总结后,
- 从头来之【iOS及历史版本特性介绍】
- python简单数据类型变量_python-2-变量和简单数据类型
- 拜水都江堰,问道青城山
- Xmind 8 下载以及破解
- mariaDB安装与配置
- linux git ssh目录权限,Git SSH Key的配置问题
- 开发一个App大概要多少钱?只讲干货
- NumPy基础之大作业(Iris数据分析)
- 前端安全跨站脚本攻击
- 互联网时代,怎么做到真正的信息安全?
- STM32+ESP-01对接阿里飞燕平台