手动模拟除法运算就好了。可以自己先拿纸算一下。
#include <cstdio>
using namespace std;
const int maxn=2021;
int a[maxn],b[maxn];int len = 0;
int d,remain;
void divid(int t,int cache){
a[t]+=cache*10;//用cache处理上一位(或者几位)被除后的余数。乘10后加到本位上。
b[t]=a[t]/d;
if(t==len-1) { remain=a[t]%d; return;} //len是数组总长,因为t从0开始,所以要-1。
divid(t+1,a[t]%d);
return ;
}
int main(){
char input;
while ((input = getchar()) != ' ') a[len++] = input - '0'; //用字符和整数数组处理被除数。实现高精 //度运算
scanf("%d", &d); //导入除数
divid(0,0);
bool q=0;//除去答案前面的0。如000123
for(int i=0;i<len;i++){
if(b[i]!=0||len==1) q=1;
if(q) printf("%d",b[i]);
}
printf(" %d",remain);
}