1 条题解
-
1
水题时看到一到模板高精度除法,就点击来做题了.
然鹅我提交了3次才过T_T好的我们来看一下这题.
A/B Problem
题目描述
输入两个整数 ,输出它们的商。
输入格式
两行,第一行是被除数,第二行是除数。
输出格式
一行,商的整数部分。
样例 #1
样例输入 #1
10 2
样例输出 #1
5
提示
,。
看到数据范围,这是一道高精度除以低精度的题.We all know 高精度运算可以借鉴竖式的操作方法.那咱们就可以列一个竖式.回想一下小学一二年级柯埃的数学老师是怎么教的:
一个算式:,怎么计算呢?
(一)首先我们看被除数的前一位:1,,所以商的第1位为0,当前余数为1
(二),,所以商的第2位为0,当前余数为2
(三),,所以商的第3位为4,当前余数为20
(四),,所以商的第4位为8,当前余数为2
(五),,所以商的第5位为1,当前余数为0
运算结束,得到商为00480,去掉两个前导0,得到商为480.
那咱们就按照上面的运算过程模拟一下喽!
Accio Code!
#include<bits/stdc++.h> using namespace std; string A; int B,a[5005],b[5005]; const int SIZE = sizeof(b); void piv(int a[],int k,int c[]){ memset(c,0,SIZE); c[0]=a[0]; long long r=0; for(int i=c[0];i>=1;i--){ r = r*10+a[i]; c[i]=r/k; r%=k; } while(c[0]>0 && c[c[0]]==0 )c[0]--; } int main(){ cin>>A>>B; if(A=="0"){ cout<<0; return 0; } a[0]=A.size(); for(int i=1;i<=a[0];i++)a[i]=A[a[0]-i]-'0'; piv(a,B,b); for(int i=b[0];i>=1;i--)cout<<b[i]; return 0; }
有两个坑:一是要特判当被除数等于0的情况,二是r要开long long ,否则你就会想我一样80WA啦!
本次题解到此结束,谢谢观看
- 1
信息
- ID
- 479
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 61
- 已通过
- 16
- 上传者