题目:
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
思路:
模拟除法运算即可,注意第一个元素为零有两种特殊情况,第一种后面没有元素了,直接输出,第二种后面还有其他元素,便省略第一个元素输出;
其次在判断是否在字符串末尾时,数字零 0 与字符 '\0' 能发挥相同的作用。
C语言代码:
#include<stdio.h>
int Divide(char *a,int b,char *s)
{
int i=0,beichushu=0,yushu=0;
while(a[i]!='\0')
{
beichushu=yushu*10+a[i]-'0';
s[i]=beichushu/b+'0';
yushu=beichushu%b;
i++;
s[i]='\0';
}
return yushu;
}
int main()
{
char a[1001],s[1001];
int b;
scanf("%s",a);
scanf("%d",&b);
int y=Divide(a,b,s);
if(s[0] == '0' && s[1] != 0){ //0与‘\0' 的作用一样啊,把只有一个零的情况排除
printf("%s", s + 1);
}
else{
printf("%s", s);
}
printf(" %d",y);
return 0;
}