PTA1022 D进制的A+B 及 10进制转N(N>=2,N为自然数)进制方法

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

输入格式:

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

输出格式:

输出 A+B 的 D 进制数。

输入样例:

123 456 8

输出样例:

1103

C#源码

using System;

namespace _1022 {

class Program

{

static void Main(string[] args)

{

string strIn = Console.ReadLine();

String[] strArr = strIn.Split(' ');

long intA = long.Parse(strArr[0]);

long intB = long.Parse(strArr[1]);

int intD = int.Parse(strArr[2]);

long C = intA + intB;

if (C == 0)//如果C为0,直接输出结果并退出

{

Console.WriteLine(0);

return;

}

int remainder = 0;

string strOut = string.Empty;

while ( C>intD)//此为重点,也就是将10进制转为D进制

{

remainder = (int)(C % intD);

C = C / intD;

strOut = remainder + strOut;

}

Console.WriteLine( strOut);

}

}

}

注意点:

  1. 需要关注A+B=0的情况;题中说的是非负数,很容易只关注了正数,未考虑A B都为0的情况

  2. 就是10进制转换为D进制(1,10] 方法

    以示例中的10进制转8进制来说明,123+456=579,579转为8进制为1103。

    其转换方法如下图,将579÷8=72……3  商为72余数为3,按下图中所示短除法的方法来表示商和余数。最后将最后一次商小于除数的商直接当余数,将所有余数倒序(红色箭头方向,由下到上)排列出来,就是8进制的数值:1103

(0)

相关推荐