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

本文详细阐述了如何将两个非负整数进行指定进制的加法运算,并通过实例展示了具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

输入格式:

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

输出格式:

输出A+B的D进制数。

输入样例:
123 456 8
输出样例:
1103
#include "iostream"
#include "stack"
using namespace std;


int main()
{
  long A, B, C;
  long temp=0;
  int D;
  cin >> A >> B>>D;
  while (A < 0 || B < 0)
    return 0;
  C = A + B;            //先求和
  
  stack<long>E;
  if (C>0)        
  {
    switch (D)
    {
    case 2:
      while (C > 0)
      {
        temp = C % 2;
        E.push(temp);
        C /= 2;
      }
      break;
    case 3:
      while (C > 0)
      {
        temp = C % 3;
        E.push(temp);
        C /= 3;
      }
      break;
    case 4:
      while (C > 0)
      {
        temp = C % 4;
        E.push(temp);
        C /= 4;
      }
      break;
    case 5:
      while (C > 0)
      {
        temp = C % 5;
        E.push(temp);
        C /= 5;
      }
      break;
    case 6:
      while (C > 0)
      {
        temp = C % 6;
        E.push(temp);
        C /= 6;
      }
      break;
    case 7:
      while (C > 0)
      {
        temp = C % 7;
        E.push(temp);
        C /= 7;
      }
      break;
    case 8:
      while (C > 0)
      {
        temp = C % 8;
        E.push(temp);
        C /= 8;
      }
      break;
    case 9:
      while (C > 0)
      {
        temp = C % 9;
        E.push(temp);
        C /= 9;
      }
      break;
    case 10:
      cout << C;
      return 0;
    default:
      break;
    }
    while (!E.empty())
    {
      cout << E.top();
      E.pop();
    }
  }
  else
    cout << 0;
  return 0;
}

Aden:用stack堆栈好麻烦,我写的就只这么麻烦。。。

#include <iostream>

using namespace std;

int main()
{
    int a,b,c,d,i,n=0;
    int s[100];
    scanf("%d %d %d",&a,&b,&d);
    c = a + b;
    while(c!=0)
    {
        s[n++]=c%d;
        c=c/d;
    }
    for(i=n-1;i>=0;i--)
        printf("%d",s[i]);
    if(n==0) printf("0");
    system("pause");
    return 0;
}


#include<iostream>  
using namespace std;  
  
void test(int m,int k){  
    if(m/k==0)cout<<m;  
    else{   
       test(m/k,k);  
       cout<<m%k;}  
   }  
int main(){  
    int A,B,D;  
    cin>>A>>B>>D;  
    int cnt=0;  
    cnt=A+B;  
    test(cnt,D);       
    system("pause");      
    return 0;  
    }  
Aden:最下面一个用到了递归,一开始我也想用递归,只可惜不会,学习了这个。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值