#include <iostream>
using namespace std;
int dividend[5000] = { 0 };//被除数
int quotient[5000] = {0};//商
int main() {
//由于int无法容纳足够多的数字,只能用string来存储
string a;
int divisor;//题目中除数范围在int内
cin >> a >> divisor;
//获取字符串的长度:
int al = a.length();
for (int i = 0; i < al; i++)
{
//字符串a是可以变成a[i]的,每一个元素就是对应的字符
//-'0'可以将数字字符转换为数字
dividend[i] = a[i]-'0';
}
long long remainder = 0;//记录中间数
for (int i = 0;i < al;i++)//被除数开始逐个计算
{
quotient[i] = (remainder * 10 + dividend[i]) / divisor;//计算商的每一位
remainder = remainder * 10 + dividend[i] - (quotient[i] * divisor);//计算相减的中间数
}
//不判断到最后一位的原因是,如果计算结果为0,能保证输出计算结果
int zeroflag = 0;//设置一个发现非零数的标记,默认为0
for (int i = 0; i < al ; i++)
{
//若前边几位都是0,且不是最后一位,且标记还是为0,则跳过本次循环
if (quotient[i] == 0 && zeroflag == 0 && i < al-1)
{
continue;
}
zeroflag = 1;//找到第一个非零数之后,就将标记设位1,这样就不会影响到后续的0
cout << quotient[i];
}
return 0;
}
P1480 A/B Problem
最新推荐文章于 2025-05-07 10:02:08 发布

397

被折叠的 条评论
为什么被折叠?



