1017. A除以B (20)
PAT地址:点击打开链接
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:123456789050987654321 7输出样例:
17636684150141093474 3
注意:一开始做的时候忘记考虑A只有一位且小于B,例如A=3,B=5。
方法一:自己做的。
C Code:
#include <stdio.h>
#include <string.h>
int main()
{
int n, i;
int temp = 0;
char str[1001];
scanf("%s",str);//不能用gets(str);
scanf("%d",&n);
int length = strlen(str);
for(i = 0; i < length; i++){
temp = (str[i] - '0') + temp * 10; //灵魂所在
if((str[i] - '0') < n && i == 0){
if(length == 1) {
printf("%d",temp / n);
break;
} //A只有一位,且A<B;
else continue;
} //A的第一位处理
printf("%d",temp / n);
temp %= n;
}
printf(" %d\n",temp);
return 0;
}
方法2:
#include <stdio.h>
#include <string.h>
int main()
{
char a[1001];
scanf("%s",a);
int b, i;
scanf("%d",&b);
int n = strlen(a);
int temp = 0;
int flag = 0;
for(i = 0; i < n; i++){
temp = (a[i] - '0') + temp * 10;
if(temp >= b){
printf("%d",temp / b);
flag = 1;
}else if(flag){
printf("0");
}
temp %= b;
}
if(flag == 0)
printf("0");
printf(" %d",temp);
}