• PAT 1017 A除以B


    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表示改为的结果)

    1. #include <stdio.h>
    2. int main(void){
    3. char s[1001];
    4. int b,r=0,i,t;
    5. scanf("%s %d",s,&b);
    6. for(i=0;s[i]!='\0';i++){
    7. t=r*10+s[i]-'0';
    8. if(t>=b) printf("%d",t/b);
    9. else if(t<b && i!=0) printf("0");
    10. r=t%b;
    11. }
    12. printf(" %d",r);
    13. return 0;
    14. }

    2022.6.25:

    终于知道什么情况了,原来是忽略了一种情况:

    因为我在代码里说了只有当i!=0的时候才会打印1,但是有种情况,就是被除数<除数,这种情况也得打印0,所以得特殊处理一下

    1. #include <stdio.h>
    2. int main(void){
    3. char s[1001];
    4. int r=0,b,i,t;
    5. scanf("%s %d",s,&b);
    6. for(i=0;s[i]!='\0';i++){
    7. t=r*10+s[i]-'0';
    8. if(t>=b) printf("%d",t/b);
    9. else{
    10. if(i!=0) printf("0");
    11. else if(s[i+1]=='\0') printf("0");
    12. }
    13. r=t%b;
    14. }
    15. printf(" %d\n",r);
    16. return 0;
    17. }

     

     好好学习,天天向上!

    我要考研!

  • 相关阅读:
    Nginx - 虚拟主机与域名解析
    尚硅谷-Dubbo篇
    沁恒微电子CH347是一款高速USB总线转接芯片
    从指针开始变强(二)之函数指针
    vite和webpack的区别
    scrapy案例教程
    【wpf】Command Binding 命令绑定的使用
    私域运营丨用户运营SOP,批量成交私域新老客户!
    顶级AI工具大盘点!
    会计制度设计
  • 原文地址:https://blog.csdn.net/weixin_50679551/article/details/125456318