暴力破解练习(二)罗马数字
2018-03-11 16:11
127 查看
古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,
所以在现代很少使用了。
之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!
罗马数字的表示主要依赖以下几个基本符号:
I --> 1
V --> 5
X --> 10
L --> 50
C --> 100
D --> 500
M --> 1000
这里,我们只介绍一下1000以内的数字的表示法。
单个符号重复多少次,就表示多少倍。最多重复3次。
比如:CCC表示300 XX表示20,
但150并不用LLL表示,这个规则仅适用于I X C M。
如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。
比如:IX表示9 IV表示4 XL表示40
49 = XLIX
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int returnNum(char *s,int num)
{
int sum = 0;
for (int i = 0; i < num; i++)
{
char c = s[i];
if (c == 'I') sum += 1;
if (c == 'V') sum += 5;
if (c == 'X') sum += 10;
if (c == 'L') sum += 50;
if (c == 'C') sum += 100;
if (c == 'D') sum += 500;
if (c == 'M') sum += 1000;
}
//strstr c语言的匹配
if (strstr(s,"IV")!=NULL)
{
sum -= 2;
}
if (strstr(s, "IX") != NULL)
{
sum -= 2;
}
if (strstr(s, "XL") != NULL)
{
sum -= 20;
}
if (strstr(s, "XC") != NULL)
{
sum -= 20;
}
if (strstr(s, "CD") != NULL)
{
sum -= 200;
}
if (strstr(s, "CM") != NULL)
{
sum -= 200;
}
return sum;
}
int main()
{
int a=returnNum("MCCCXIV",7);
printf("%d\n",a);
return 0;
}
所以在现代很少使用了。
之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!
罗马数字的表示主要依赖以下几个基本符号:
I --> 1
V --> 5
X --> 10
L --> 50
C --> 100
D --> 500
M --> 1000
这里,我们只介绍一下1000以内的数字的表示法。
单个符号重复多少次,就表示多少倍。最多重复3次。
比如:CCC表示300 XX表示20,
但150并不用LLL表示,这个规则仅适用于I X C M。
如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。
比如:IX表示9 IV表示4 XL表示40
49 = XLIX
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int returnNum(char *s,int num)
{
int sum = 0;
for (int i = 0; i < num; i++)
{
char c = s[i];
if (c == 'I') sum += 1;
if (c == 'V') sum += 5;
if (c == 'X') sum += 10;
if (c == 'L') sum += 50;
if (c == 'C') sum += 100;
if (c == 'D') sum += 500;
if (c == 'M') sum += 1000;
}
//strstr c语言的匹配
if (strstr(s,"IV")!=NULL)
{
sum -= 2;
}
if (strstr(s, "IX") != NULL)
{
sum -= 2;
}
if (strstr(s, "XL") != NULL)
{
sum -= 20;
}
if (strstr(s, "XC") != NULL)
{
sum -= 20;
}
if (strstr(s, "CD") != NULL)
{
sum -= 200;
}
if (strstr(s, "CM") != NULL)
{
sum -= 200;
}
return sum;
}
int main()
{
int a=returnNum("MCCCXIV",7);
printf("%d\n",a);
return 0;
}
相关文章推荐
- 暴力破解练习(三)分巧克力
- 暴力破解练习(五)排列组合模板二
- 暴力破解练习(一)信用卡号的验证
- [来点干货][这不是练习]数据库密码暴力破解程序
- 暴力破解练习(六)四平方和
- 暴力破解与实用性优先(罗马数字)
- 暴力破解练习(四)排列组合模板一
- 自制玩具 RAR密码暴力破解
- centos,密码登陆,防暴力破解
- Denyhosts 轻松应对SSH暴力破解 推荐
- 暴力破解脚本 shell
- Wordpress xmlrpc.php暴力破解漏洞
- Python写的PHPMyAdmin暴力破解工具代码
- metasploit framework(八):snmp扫描,暴力破解
- Linux下暴力破解工具Hydra详解
- Python脚本暴力破解栅栏密码
- 暴力破解--利用计算机执行速度
- fail2ban[防止linux服务器被暴力破解]
- 修改服务器22端口, 以防止暴力破解
- fail2ban防止暴力破解