PAT [B1017 A除以B] C语言

PAT [B1017 A除以B] C语言,第1张

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。

输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。

输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3

思路:

模拟竖式除法的每一步 *** 作,N表示竖式每一步运算的被除数,由上一次运算的余数和被除数A对应的一位组成。计算每一次N/B的值并从第一次非0结果开始输出,即跳过所有前导0(特殊情况是商全为0)。

flag表示是否已经有非0的输出,若有,则N/B为0的值可以输出,否则是前导0不予输出。商全为0需要特判输出“0”。

#include
int main(void){
    char A[1001];
    int B,R=0,N,flag=0;
    scanf("%s %d",A,&B);
    for(int i=0;A[i]!='\0';i++){
        N=R*10+(A[i]-'0');
        if(flag==0&&N/B>0) flag=1;
        if(flag) printf("%d",N/B);
        R=N%B;
    }
    if(flag==0) printf("0");
    printf(" %d",R);
    return 0;
}

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1353805.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-14
下一篇2022-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存