1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
123456789050987654321 7
17636684150141093474 3
2022.6.25
总结:测试点1一直过不去,浪费太多的时间了,实际中也不一定能注意到这个点,有时间在慢慢研究吧 (18分)
这里被除数有两种情况,
①:当前位的数值>除数
②:当前位的数值<除数(在非第一位需要打印0表示改为的结果)
- #include <stdio.h>
-
- int main(void){
- char s[1001];
- int b,r=0,i,t;
- scanf("%s %d",s,&b);
-
- for(i=0;s[i]!='\0';i++){
- t=r*10+s[i]-'0';
- if(t>=b) printf("%d",t/b);
- else if(t<b && i!=0) printf("0");
- r=t%b;
- }
- printf(" %d",r);
- return 0;
- }
2022.6.25:
终于知道什么情况了,原来是忽略了一种情况:
因为我在代码里说了只有当i!=0的时候才会打印1,但是有种情况,就是被除数<除数,这种情况也得打印0,所以得特殊处理一下
- #include <stdio.h>
-
- int main(void){
- char s[1001];
- int r=0,b,i,t;
-
- scanf("%s %d",s,&b);
-
- for(i=0;s[i]!='\0';i++){
- t=r*10+s[i]-'0';
- if(t>=b) printf("%d",t/b);
- else{
- if(i!=0) printf("0");
- else if(s[i+1]=='\0') printf("0");
- }
- r=t%b;
- }
-
- printf(" %d\n",r);
- return 0;
- }
好好学习,天天向上!
我要考研!