Project Euler:Problem 89 Roman numerals
2015-07-24 16:44
411 查看
For a number written in Roman numerals to be considered valid there are basic rules which must be followed. Even though the rules allow some numbers to be expressed in more than
one way there is always a "best" way of writing a particular number.
For example, it would appear that there are at least six ways of writing the number sixteen:
IIIIIIIIIIIIIIII
VIIIIIIIIIII
VVIIIIII
XIIIIII
VVVI
XVI
However, according to the rules only XIIIIII and XVI are valid,
and the last example is considered to be the most efficient, as it uses the least number of numerals.
The 11K text file, roman.txt (right
click and 'Save Link/Target As...'), contains one thousand numbers written in valid, but not necessarily minimal, Roman numerals; see About...
Roman Numerals for the definitive rules for this problem.
Find the number of characters saved by writing each of these in their minimal form.
Note: You can assume that all the Roman numerals in the file contain no more than four consecutive identical units.
化简成最简格式无非就是遇到DCCCC变成CM,LXXXX变成XC,VIIII变成IX,IIII变成IV,XXXX变成XL,CCCC变成CD
反正遇到这样的这些字符最后都变成2个字符
one way there is always a "best" way of writing a particular number.
For example, it would appear that there are at least six ways of writing the number sixteen:
IIIIIIIIIIIIIIII
VIIIIIIIIIII
VVIIIIII
XIIIIII
VVVI
XVI
However, according to the rules only XIIIIII and XVI are valid,
and the last example is considered to be the most efficient, as it uses the least number of numerals.
The 11K text file, roman.txt (right
click and 'Save Link/Target As...'), contains one thousand numbers written in valid, but not necessarily minimal, Roman numerals; see About...
Roman Numerals for the definitive rules for this problem.
Find the number of characters saved by writing each of these in their minimal form.
Note: You can assume that all the Roman numerals in the file contain no more than four consecutive identical units.
化简成最简格式无非就是遇到DCCCC变成CM,LXXXX变成XC,VIIII变成IX,IIII变成IV,XXXX变成XL,CCCC变成CD
反正遇到这样的这些字符最后都变成2个字符
import re ans=0 for line in open("roman.txt"): a=len(line) line=re.sub('DCCCC|LXXXX|VIIII|CCCC|XXXX|IIII','aa',line) b=len(line) ans=ans+a-b print(ans)
相关文章推荐
- Ehcache简单说明及使用
- SQLite数据库
- Configuring The CAS Server Used By RPC Client
- Oracle 10g与SQL Server 2008互联之透明网关配置
- linux系统连接串口工具打印log
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- Intellij IDEA Ultimate Edition 14.1 下载及安装破解
- 1. 单链表的倒置输出
- 爬虫获取邮箱,存入数据库,发送邮件java Mail
- Sass学习之路:注释、变量以及导入
- cf 559a **
- mvn常用指令记录
- kvm管理操作虚拟机
- wcf 客户端与服务器之间在传递DataTable问题
- mysql中orderby和limit同时使用的bug
- 【暴力搜索】[HDU 1175]连连看
- Delete Node in a Linked List
- POJ2186(tarjan求连通分量)
- leetcode笔记:Remove Duplicates from Sorted Array II
- 盗墓笔记