将小数转换为U-125基

问题描述

有一个名为U-125的Universe,其中不使用十进制编号系统。他们对数字的计数如下:

[HttpGet]
public IEnumerable<string> Get()
{
    return new string[] { "value1","value2" };
}

我需要编写一个带有函数1,2,5,11,12,15,21,22,25,51,52,55 ... 的程序,该程序返回一个数字,当给定十进制数字时,其基数已转换为U-125的编号系统。

我发现每个小数将对应于本系列中的convertBase(n),但我不知道如何生成该系列以及该系列应该持续多长时间。

解决方法

嗯,这是关于数字转换的。我们观察到,我们有一个带有3个不同数字的编号系统。 1、2和5。

因此,我们需要执行2个步骤。

  • 首先:将小数转换为以3为底的数字。
  • 第二个:将0替换为1,将1替换为2,将2替换为5。

对于转换,我们使用标准方法,对模进行取模以获取数字,然后使用整数除法获取下一个值。可以在SO上找到一百万次,而无需进一步解释。

由于此算法以相反的顺序计算数字,因此我们将这些数字放到堆栈上,然后以正确的顺序输出它们。

下面是C ++中的一些示例代码,该代码可将值转换为十进制数100。

请参阅:

#include <iostream>
#include <string>
#include <stack>

int main() {

    for (unsigned int k{0}; k < 101; ++k) {

        std::cout << k << " \t--> ";
        unsigned int n{ k };

        std::stack<unsigned int> digits{};

        do {
            switch (n % 3) {
            case 0: 
                digits.push(1); 
                break;
            case 1: 
                digits.push(2); 
                break;
            case 2: 
                digits.push(5); 
                break;
            default: 
                digits.push(0); 
                break;
            }
            n = n / 3;
        } while (n > 0);

        while (!digits.empty()) {
            std::cout << digits.top();
            digits.pop();
        }
        std::cout << '\n';
    }
    return 0;
}
,

我很好奇,所以现在破坏了您的作业(我!我!我是一项作业编写服务!)。这就是here所示的递归算法,用于转换为以n为底的数字,并扩展为任意数字。我用一些有争议的数字补足了基数17,您必须适应这一方面。也许尝试实现堆栈版本,因此至少要进行一些练习。显然,它是用Python实现的。嗯...不,C ++,抱歉。

public class BaseConversion {

    public static String writebase(int n,int base,char separator,String[] numerals) {
        if (base > numerals.length || base <= 0)
            throw new IllegalArgumentException();

        if (n != 0) {
            return writebase(n / base,base,separator,numerals) + separator + numerals[n % base];
        } else {
            return numerals[0];
        }
    }

    public static void main(String[] args) {
        String[] numerals = {"٠","אחת","٢","שלש","٤","חמש","٦","٧","שמונה","٩","α","β","γ","δ","ε","ζ","η"};
        int n = 17271;
        int base = 17;
        System.out.println(writebase(n,' ',numerals));
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...