这个题的本质就是实现一个大整数 除以 一个一位数的除法
先期也想到就是实现这种运算,但是对条件的把握不好,以及对这种运算认识不够深刻,再加上自己一直习惯字符串尾部特殊处理,而这题需要头部先处理,自己不太习惯,导致没有写出来;看了解析后,整理思路如下:
思路:
先处理最高位数,如果商不为0或者大数只有一位,则输出商,然后tmp = 最高位余数;接着就开始做for循环,直到最低位!
代码如下,提交使用g++
#include<bits/stdc++.h>
using namespace std;
int main()
{
string num;
int b, t=0, tmp=0;
cin >> num >> b;
//先单独处理最高位
t = (num[0]-'0')/b;
if(t!=0||num.length()==1) //余数不为0或num只有一位则输出
cout << t;
tmp = (num[0]-'0')%b;
for(int i=1; i<num.length(); i++)
{
t = (tmp*10 + (num[i]-'0'))/b;
printf("%d",t);
tmp = (tmp*10 + (num[i]-'0'))%b;
}
cout << " " <<tmp;
}