本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
123456789050987654321 7
17636684150141093474 3
1000位,4字节的int能存10位,8字节的long long能存19位,于是只能用字符串去解决。
一般来说也不难。
问题在于输入只有的数只有一位的时候就要特殊处理,比如输入6 9,应该输出0 6。
#include<stdio.h>
#include<string.h>
int main()
{
char num[1001],q[1001];
int divi,rest=0,i,count=0;
scanf("%s %d",num,&divi);
for(i=0;num[i];i++)
{
if(i==0&&num[i]-'0'<divi)
{
if(strlen(num)==1)
printf("0");
}
else
q[count++]=(10*rest+num[i]-'0')/divi;
rest=(10*rest+num[i]-'0')%divi;
}
for(i=0;i<count;i++)
printf("%d",q[i]);
printf(" %d",rest);
}