求助把数字转化成罗马数字
课后作业求助!!!输入年份数字并输出以罗马数字书写的年份。 罗马数字V代表5,X代表10,L代表50,C代表100,D代表500,M代表1,000。 一些数字是通过使用一个罗马“数字”的减法来形成的; 例如,IV为4,V减去I,XL为40,CM为900,依此类推。 一些示例年份:MCM是1900,MCML是1950,MCMLX是1960,MCMXL是1940,MCMLXXXIX是1989。假设年份在1000到3000之间。
求解~ leetCode上有原题,你可以找找 看错了,LeetCode上市把罗马数字该为整数 我好久不玩c了,这是python代码你自己翻译一下
roman=[["","I","II","III","IV","V","VI","VII","VIII","IX"],["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],
["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"],["","MM","MM","MMM"]]
str=""
for x in range(1000,3001):
str+=roman
str+=roman
str+=roman
str+=roman
print("%d= %s"%(x,str))
str="" 梦想灬远帆 发表于 2020-7-6 09:04
看错了,LeetCode上市把罗马数字该为整数
我感觉这个更难 差不多,可以反推回来,知道原理就行 这是我在Leecode提交的答案
int romanToInt(char *s)
{
int slen = strlen(s);
int sum = 0;
/*--------------定义一个整数数组--------------- */
int *arr = (int *)malloc(sizeof(int) * (slen));
/*--------------转换成整数数组----------------- */
for (size_t i = 0; i < slen; i++)
{
if (s == 'I')
{
arr = 1;
}
else if (s == 'V')
{
arr = 5;
}
else if (s == 'X')
{
arr = 10;
}
else if (s == 'L')
{
arr = 50;
}
else if (s == 'C')
{
arr = 100;
}
else if (s == 'D')
{
arr = 500;
}
else if (s == 'M')
{
arr = 1000;
}
}
/*-----------调整数组元素的正负号--------------------------------- */
for (size_t i = 0, j = 1; i <slen - 1, j < slen; i++, j = i + 1)
{
if (arr == 1)
{
if (arr < arr)
{
arr = -1;
}
}
if (arr == 10)
{
if (arr < arr)
{
arr = -10;
}
}
if (arr == 100)
{
if (arr < arr)
{
arr = -100;
}
}
}
/*----------------求和---------------------------- */
for (size_t i = 0; i < slen; i++)
{
sum = sum + arr;
}
return sum;
free(arr);
} wp231957 发表于 2020-7-6 09:23
我好久不玩c了,这是python代码你自己翻译一下
太感谢了!!!主要就是想看过程是怎么样的。哎 刚开始接触编程, 先从c++开始学{:10_266:}
页:
[1]