回到我的大学时代,当我学习C时,所有我都遇到了以相应的罗马数字形式表示一年的问题。该文中没有解决方案,因为这是一些值得思考的额外问题。我能想到的只是使用模数运算符和一堆ifs。我想知道是否有人可以给我一个合适的解决方案。可以使用简单的算法或对所用逻辑的解释。
答案 0 :(得分:5)
这是小于4,000的数字的逻辑。 (请参阅下文,了解上述内容。)有一个基本的4步算法适用于每个级别。
确定数字中的千位数:floor(number / 1000)。输出许多“M”并从数字中减去数千。此时,该数字小于1,000。
如果数字>> = 900,则输出“CM”并减去900.
如果数字>> 500,则输出“D”并减去500.
如果数字>> = 400,则输出“CD”并减去400.
此时,该数字保证<&lt;我们遵循类似的模式将数量减少到40以下:
确定数字中的数百个,输出多个“C”并从数字中减去数百个。此时,该数字小于100.
如果数字>&gt; = 90,则输出“XC”并减去900.
如果数字>&gt; = 50,则输出“L”并减去50。
如果数字>&gt; = 40,则输出“XL”并减去40。
此时,该数字保证<&lt;我们使用“X”,“IX”,“V”和“IV”重复完全相同的逻辑。我们使用数字(保证为&lt; 4)作为输出“I”的数量来完成。
对于较大的数字,逻辑仍然相同,我们只使用顶部带条形的标准符号。每个条形代表没有该条形的值的1,000倍。 (所以带条的V等是5000等)