zoukankan      html  css  js  c++  java
  • 罗马数字转换成整数

    时间限制:1000ms 内存限制:65536K

    给定一个罗马数字 s,将罗马数字转换成整数。

    如罗马数字IIIIIIIVV分别代表数字 1, 2, 3, 4, 5

    首先要来了解一下罗马数字表示法,基本字符有 7 个:IVXLCDM,分别表示 1510501005001000

    在构成数字的时候,有下列规则:

    1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:III = 3

    2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:VIII = 8XII = 12

    3、小的数字,(限于XC)在大的数字的左边,所表示的数等于大数减小数得到的数,如:IV = 4IX = 9

    4、正常使用时,连写的数字重复不得超过三次。

    输入格式

    输入一个罗马数字字符串,其对应的数字为 s(1s3999)

    输出格式

    输出对应的整数 s

    样例输入

    CXXIII

    样例输出

    123

    总结:

        从右往左扫一遍,如果比前一个小的减其他全部加。

    代码:

    #include <iostream>
    
    using namespace std;
    
    int F(char a){
    	switch(a){
    		case 'I':
    			return 1;
    		case 'V':
    			return 5;
    		case 'X':
    			return 10;
    		case 'L':
    			return 50;
    		case 'C':
    			return 100;
    		case 'D':
    			return 500;
    		case 'M':
    			return 1000;
    	}
    }
    
    int main(){
    	
    	string s;
    	cin>>s;
    	int sum = F(s[s.length()-1]);
    	int temp = sum;
    	for(int i=s.length()-2 ; i>=0 ; i--){
    		int mid = F(s[i]);
    		if(mid<temp)sum -= mid;
    		else sum += mid;
    		temp = mid;
    	}
    	cout<<sum;
    	
    	return 0;
    } 

  • 相关阅读:
    ES6常用语法
    nodejs中exports与module.exports的区别
    CSS animation动画
    CSS user-select文本是否可复制
    VUE 滚动插件(better-scroll)
    VUE 父组件与子组件交互
    CSS div内文字显示两行,超出部分省略号显示
    linux下使用tar命令
    linux fdisk命令使用
    关于SUID、SGID、Sticky
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514157.html
Copyright © 2011-2022 走看看