AcWing 794.高精度除法

AcWing 794.高精度除法

题目描述

给定两个正整数A,B,请你计算 A / B的商和余数。

输入格式

共两行,第一行包含整数A,第二行包含整数B。

输出格式

共两行,第一行输出所求的商,第二行输出所求余数。

数据范围

1≤A的长度≤100000,
1≤B≤10000

输入样例

7
2

输出样例

3
1

题目思路

低角标存低位,高角标存高位;按位依次向后除,A[i]除整个b,余数进位

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

vector<int> div(vector<int> &A,int &b,int &r)
{
    vector<int> C;
    int t = 0;
    for(int i=A.size()-1;i>=0;i--)
    {
        t *= 10;
        t += A[i];
        C.push_back(t/b);
        t %= b;
    }
    r = t;
    reverse(C.begin(),C.end());
    while(C.size()>1&&C.back()==0) C.pop_back();
    return C;
}

int main()
{
    string a;
    int b,r=0;
    cin >> a >> b;
    vector<int> A,C;
    for(int i=a.size()-1;i>=0;i--) A.push_back(a[i] - '0');

    C = div(A,b,r);

    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
    printf("\n%d",r);

    return 0;
}

原文地址:https://www.cnblogs.com/fsh001/p/12242954.html

时间: 2024-09-30 23:58:37

AcWing 794.高精度除法的相关文章

【算法:1】高精度除法

高精度除法,我用高精度减法来模拟 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> using namespace std; inline int read() { int x=0,f=1;char ch=getchar();

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

问题 G: [高精度]高精度数除以低精度数I 时间限制: 1 Sec  内存限制: 512 MB提交: 19  解决: 15[提交][状态][讨论版] 题目描述 修罗王聚集了庞大的暗元素以施展隐匿魔法,该魔法施展后将对其周边的时空产生隐匿效果,当然,隐匿的效果好坏取决于是否将暗元素平均地分配在其周边时空,显然这涉及高精度除法的编程.考虑到邪狼的理解能力,修罗王不得不先将问题简化为:输入一被除数(位数≤5000),输入一除数(整型数据范围内),输出整数商,忽略小数. 输入 共两行,第1行为一个数字

poj 2635 The Embarrassed Cryptographer 筛素数+高精度除法

题意: 给K(<10^100),L(<10^6),求K小于L的最小素因子并输出,如果没有则输出GOOD. 分析: 枚举小于L的素数用高精度除法判断是否是因子,关键是怎么高效筛素数,先给一种比较慢的筛法: primes[max_prime_num],num=0; memset(vis,0,sizeof(vis)) for(int i=2;i<maxL;++i) if(vis[i]==0){ prime[num++]=i; for(int j=2*i;j<maxL;j+=i) vis[

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

(- ̄▽ ̄)-* 这道题涉及高精度除法,模板如下: char s[1005]; char division[1005];//存储进行高精度除法的数据 bool bignum_div(int x) { int tot=0,num=0; for(int i=0;s[i];i++) { num=num*10+s[i]-'0'; division[tot++]=num/x+'0'; num%=x; } division[tot]='\0';//利于进行strcpy() if(num==0) //有适合的

【算法学习笔记】34.高精度除法 SJTU OJ 1026/1016

高精度除法, 这个和加减乘一样,我们都要从手算的角度入手.举一个例子,比如 524134 除以 123.结果是4261 第一位4的来源是 我们把 524和123对齐,然后进行循环减法,循环了4次,余32,将32134的前三位321继续和123对齐,循环减法2次,余75,把7534的前三位753和123对齐,循环减法6次,余15,将154和123对齐,只能减1次,所以结果是4 2 6 1. 把上述过程程序化 1.把A,B两个数存入char数组 0下标表示的是最高位2.把A的前lenB位和B对齐进行

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

题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 1 import java.math.BigDecimal; 2 import java.util.Scanner; 3 4 public class BD 5 { 6 public static void main(String[] args) 7 { 8 Scanner scanner = new Scanner(System.in); 9 while(scanner.hasNext()) 10 { 11

高精度除法(大数相除)

高精度除法(高除高) #include<cmath> #include<iostream> #include<cstdio> #include<cstring> #include<string> using namespace std; int a[101],b[101],c[101],d,i; void shuru(int a[]) { string s; cin>>s; //读入字符串 a[0]=s.length(); //a[0

[结论][高精度除法]JZOJ 3771 小Z的烦恼

Description 小 Z 最近遇上了大麻烦,他的数学分析挂科了.于是他只好找数分老师求情. 善良的数分老师答应不挂他,但是要求小 Z 帮助他一起解决一个难题问题是这样的,现在有 n 个标号为 1-n 的球和 m 个盒子,每个球都可以放进且只能放进一个盒子里面,但是要满足如下的规则: 1.  若把标号为 i 的球放进了第 j 个盒子,那么标号为 2*i 的球一定要在第 j+1 个盒子里面(若 j<m) 2.  若把标号为 i 的球放进了第 j 个盒子,并且 k*2=i,那么标号为 k 的球一

AcWing 792.高精度减法

AcWing 792.高精度减法 题目描述 给定两个正整数,计算它们的差,计算结果可能为负数. 输入格式 共两行,每行包含一个整数. 输出格式 共一行,包含所求的差. 数据范围 1≤整数长度≤105 输入样例 32 11 输出样例 21 题目思路 低角标存低位,高角标存高位:依次进位 #include<iostream> #include<string> #include<vector> using namespace std; bool cmp(vector<i