PAT乙级1017
马上读研了,拿pat复习一下吸语言。
题目
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
错误
测试用例1未通过
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
//statement code
char inputlist[1001];
char outputlist[1001];
int B;
int R;
int p;
//function section
int robustness_check1(){//robustness function1
return 0;
}
void print_result(){
int l = strlen(inputlist);
p = 0;
int m=inputlist[0] - '0';
while(p < l){
outputlist[p] = m/B + '0';
if(p+1 <l){
m = (m%B)*10 + (inputlist[p+1] - '0');
}else{
R = m%B;
break;
}
p++;
}
if(outputlist[0] == '0')
printf("%s %d",outputlist+1,R);
else
printf("%s %d",outputlist,R);
}
int main(){
//input code
scanf("%s %d",inputlist,&B);
//robustness code
//function code
print_result();
return 0;
}
代码
上面的代码,输出的时候,判断条件有问题。判断条件加入了
&& l != 1
后,可通过所有的测试用例
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
//statement code
char inputlist[1001];
char outputlist[1001];
int B;
int R;
int p;
//function section
int robustness_check1(){//robustness function1
return 0;
}
void print_result(){
int l = strlen(inputlist);
p = 0;
int m=inputlist[0] - '0';
while(p < l){
outputlist[p] = m/B + '0';
if(p+1 <l){
m = (m%B)*10 + (inputlist[p+1] - '0');
}else{
R = m%B;
break;
}
p++;
}
if(outputlist[0] == '0' && l != 1)
printf("%s %d",outputlist+1,R);
else
printf("%s %d",outputlist,R);
}
int main(){
//input code
scanf("%s %d",inputlist,&B);
//robustness code
//function code
print_result();
return 0;
}
总结
- 这种题需要耐心思考,编程难度不高。