zoukankan      html  css  js  c++  java
  • 1022 D进制的A+B

    1022 D进制的A+B (20分)
     

    输入两个非负 10 进制整数 A 和 B (230​​1),输出 A+B 的 D (1<D10)进制数。

    输入格式:

    输入在一行中依次给出 3 个整数 A、B 和 D。

    输出格式:

    输出 A+B 的 D 进制数。

    输入样例:

    123 456 8 

    输出样例:

    1103

        这道题最好用STL中的<stack>,利用栈的先进后出的特性,我刚开始用的<vector>,但是有两个测试点段错误,然后改用<stack>,提交后就只有一个测试点答案错误,
    然后调试的时候发现当输入的前两个数都是0的时候,什么都没输出,原因是因为0加0还是0,0对任何数取余还是0,所以就没有东西进栈,栈是空的,所以要做个特殊处理。

     1 #include<iostream>
     2 #include<stack>
     3 using namespace std;
     4 int main()
     5 {
     6     int A,B,D;
     7     int result;
     8     stack<int> v;
     9     cin>>A>>B>>D;
    10     if(A==0&&B==0)
    11     {
    12         cout<<'0';
    13         return 0;
    14     }
    15     result=A+B;
    16     while(result) //商不为0,余数
    17     {
    18         v.push(result%D); //余数入栈
    19         result/=D;
    20     }
    21     while(!v.empty()) //空栈返回1,非空栈返回0
    22     {
    23         cout<<v.top();
    24         v.pop();
    25     }
    26     return 0;
    27 }

    ac了

     

  • 相关阅读:
    nova 注入adminpass 添加用户等设置
    mysql 集群 avc error
    openstack novnc console haproxy mitaka
    NFS金陵科技学院
    windows下命令行格式化U盘
    linux下安装mysql
    连表查询
    查询语句
    索引
    插入,更新与删除数据
  • 原文地址:https://www.cnblogs.com/buanxu/p/12813322.html
Copyright © 2011-2022 走看看