整数转罗马数字
解题思路:
看数字能被哪个整除,就有几个这个罗马数字,一共13个罗马数字,所以循环找13次。
代码:
public static string IntToRoman(int num)
{
int[] nums = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
string[] roman = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
StringBuilder result = new StringBuilder();
int i = 0;//遍历全部罗马类型。
int flag = 0;//表示有几个符合的罗马字符。
while (num > 0&&i<nums.Length)
{
if (nums[i] > num)
{
i++;
continue;
}//如果对应的数字大于num,跳过。
else
{
flag = num / nums[i];//得到有几个这种罗马数字。
num = num % nums[i];//对这个数字取余,得到新的数。
for (int j = 0; j < flag; j++)
{
result.Append(roman[i]);
}
i++;
}
}
return result.ToString();
}