P1480 A/B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
由图知,被除数的上一位的余数乘10加这位就是这一位结果的除数。
c[i] = (d * 10 + a[i]) / b
#include<stdio.h>
#include<string.h>
char x[50005];//存储被除数,转为字符串方便计算长度
long long b;//存储除数,转为字符串方便计算长度
int a[50005];//存储被除数,转为整型方便计算
int c[50005];//存储结果
long long d;//做余数
int main()
{
scanf("%s", x);
scanf("%lld", &b);
size_t la = strlen(x);//计算被除数的长度
for (int i = 1; i <= la; i++)
{
a[i] = x[i-1] - '0';//顺序存储被除数的每一位
}
for (int i = 1; i <= la; i++)
{
c[i] = (d * 10 + a[i]) / b;//前一个数剩余的余数乘10加当前位的数
d = (d * 10 + a[i]) % b;//计算余数
}
int lc = 1;
while (c[lc] == 0&&lc<la)
{
lc++;//去除前面的0
}
for (int i = lc; i <= la; i++)
{
printf("%d", c[i]);
}
return 0;
}