计蒜客 难题题库 014 罗马数字转换成整数
来源:互联网 发布:数据共享方式比较 编辑:程序博客网 时间:2024/06/05 22:52
给定一个罗马数字s,( I<=s<=MMMCMXCIX)(即1到3999),将罗马数字转换成整数。
如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5。
格式:
第一行输入一个罗马数字,接下来输出对应的整数。
提示:
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。
样例1
输入:
CXXIII
输出:
123
#include<iostream>#include<string>using namespace std;int main(){ string s; cin >> s; int res = 0; int n = s.length(); for(int i = 0; i < n; ++i){ switch(s[i]){ case 'I': res += 1; if(i + 1 < n && (s[i + 1] == 'V' || s[i + 1] == 'X')){ res -= 2; } break; case 'V': res += 5; break; case 'X': res += 10; if(i + 1 < n && (s[i + 1] == 'L' || s[i + 1] == 'C')){ res -= 20; } break; case 'L': res += 50; break; case 'C': res += 100; if(i + 1 < n && (s[i + 1] == 'D' || s[i + 1] == 'M')){ res -= 200; } break; case 'D': res += 500; break; case 'M': res += 1000; break; default: break; } } cout << res << endl;}
0 0
- 计蒜客 难题题库 014 罗马数字转换成整数
- 计蒜客 难题题库 013 整数转换成罗马数字
- 计蒜客挑战难题:整数转换成罗马数字
- 计蒜客 挑战难题 罗马数字转换成整数
- 计蒜客 挑战难题 第13题:整数转换成罗马数字
- 计蒜客 挑战难题 第14题:罗马数字转换成整数
- 【计蒜客系列】挑战难题13:整数转换成罗马数字
- 【计蒜客系列】挑战难题14:罗马数字转换成整数
- “计蒜客”-挑战难题-13:整数转换成罗马数字
- “计蒜客”-挑战难题-14:罗马数字转换成整数
- 计蒜课挑战难题:罗马数字转换成整数
- 计蒜客 难题题库 032 罗马数字
- 计蒜客014-罗马数字转换成整数
- 计蒜客整数转换成罗马数字
- 计蒜客罗马数字转换成整数
- 计蒜客 -- 罗马数字转换成整数
- 计蒜客 -- 整数转换成罗马数字
- 计蒜客 整数转换成罗马数字
- 编程之美----2.21 只考加法的面试题
- 项目实战JS之滚动条
- Codeforces 567F
- 黑马程序员-----java基础之运算符----与(&)、或(|)、非(!)、异或(^)、短路与(&&)等
- [POJ 3169] Layout 差分约束
- 计蒜客 难题题库 014 罗马数字转换成整数
- I学霸官方免费教程五:Java基础之运算符
- notifyDataSetChanged() 动态更新ListView
- 082 Remove Duplicates from Sorted List II [Leetcode]
- SSH整合环境下Spring配置文件的配置
- 计蒜客 难题题库 015 单独的数字
- [leetcode-89]Gray Code(c++)
- 父母之间——我的独立
- 正则表达式的知识点汇总(一)