zoukankan      html  css  js  c++  java
  • PAT 乙级真题 1007.A除以B

    PAT 乙级真题 1007.A除以B

    题目描述

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

    输入格式

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

    输出格式

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

    输入样例

    123456789050987654321 7
    

    输出样例

    17636684150141093474 3
    

    题目思路

    采用按位进行除法,余数进位的方式进行计算。
    例如:
    367 / 2
    先计算 3 / 2 = 1 余 1
    再计算 被除数加上余数进位过来的数进行计算
    也就是 (6+1*10) / 2 = 8 余 0
    再计算 (7+0*10) / 2 = 3 余 1
    最后除出来的结果就是依次算式的得数 1 8 3
    余数就是最后的余数 1
    最后输出结果为:183 1

    解题代码如下:

    #include<iostream>
    using namespace std;
    
    const int N = 1e3 + 10;
    
    int main()
    {
    	char a[N];
    	int c[N];
    	int b, d = 0, i = 0;
    	scanf("%s%d", a, &b);
    	do {
    		c[i] = ((a[i] - 48)+d*10) / b;
    		d = ((a[i] - 48)+d*10) % b;
    		i++;
    	} while (a[i] >= '0'&&a[i] <= '9');
    	if (c[0] != 0)
    		for (int j = 0; j < i; j++)
    		{
    			printf("%d", c[j]);
    		}
    	else
    		for (int j = 1; j < i; j++)
    		{
    			printf("%d", c[j]);
    		}
    	printf(" %d", d);
    	return 0;
    }
    
    
  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/fsh001/p/12205360.html
Copyright © 2011-2022 走看看