zoukankan      html  css  js  c++  java
  • PAT乙级1017

    1017 A除以B (20 分)
     

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

    输入格式:

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

    输出格式:

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

    输入样例:

    123456789050987654321 7
    

    输出样例:

    17636684150141093474 3
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 char a[1010];
     4 int n,flag,temp;
     5 int main()
     6 {
     7   cin>>a>>n;
     8   int len=strlen(a);
     9   for(int i=0;i<len;i++)
    10   {
    11     temp=temp*10+a[i]-'0';
    12     if(temp>=n)
    13     {
    14       cout<<temp/n;
    15       flag=1;
    16     }
    17     else if(flag)
    18     {
    19       cout<<0;
    20     }
    21     temp=temp%n;
    22   }
    23   if(flag==0)
    24   cout<<0;
    25   cout<<" "<<temp;
    26   return 0;
    27 }

    模拟除法

    flag==1 保证最后答案一定不为0,商的长度大于等于1,所以在之后的商的某位为0时直接输出0;

    如果没有flag这个标记,当被除数为0时(temp==0),除数不为0时,temp%n==0,所以会输出很多个0,因而错误d=====( ̄▽ ̄*)b。

  • 相关阅读:
    计数排序【代码】
    快速排序【代码】
    基于最大堆实现最大优先队列
    Spring入门(1)
    AJAX初步理解
    选择器
    Hibernate的映射
    Hibernate配置(2)
    查看mysql的安装路径
    Hibernate入门(1)
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/10639175.html
Copyright © 2011-2022 走看看