罗马数字转化

IV=4

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char ss[1000];
int main()
{
    while(cin>>ss)
    {  int sum=0;;
        for(int i=0; i<strlen(ss); i++)
        {

            switch(ss[i])
            {
            case‘M‘:
                sum+=1000;
                break;
            case‘D‘:
                sum+=500;
                break;
            case‘C‘:
                if(ss[i+1]==‘D‘||ss[i+1]==‘M‘)
                    sum-=100;
                else sum+=100;
                break;
            case‘L‘:
                sum+=50;
                break;
            case‘X‘:
                if(ss[i+1]==‘L‘||ss[i+1]==‘C‘)
                    sum-=10;
                else sum+=10;
                break;
            case‘I‘:
                if(ss[i+1]==‘X‘||ss[i+1]==‘V‘)
                    sum-=1;
                else sum+=1;
                break;
            }

        }
        cout<<sum<<endl;
    }
}

  6=VI

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int  n;
    while(cin>>n)
    {
        char* one[15]= {"","I","II","III","IV","V","VI","VII","VIII","IX"};
        char* ten[15] = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
        char* hundreds[15] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
        char* thousand[5] = {"","M","MM","MMM"};
        cout<<thousand[n/1000];
        cout<<hundreds[n%1000/100];
        cout<<ten[n%100/10];
        cout<<one[n%10];
    }

}

  

时间: 2024-11-15 11:30:32

罗马数字转化的相关文章

13. Roman to Integer 罗马数字转化为阿拉伯数字(indexOf ()和 toCharArray())easy

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which i

[LintCode] Roman to Integer 罗马数字转化成整数

Given a roman numeral, convert it to an integer. The answer is guaranteed to be within the range from 1 to 3999. Have you met this question in a real interview? Yes Clarification What is Roman Numeral? https://en.wikipedia.org/wiki/Roman_numerals htt

[LeetCode] Integer to Roman 整数转化成罗马数字

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 之前那篇文章写的是罗马数字转化成整数(http://www.cnblogs.com/grandyang/p/4120857.html), 这次变成了整数转化成罗马数字,基本算法还是一样.由于题目中限定了输入数字的范围(1 - 3999), 使得题目变得简单了不少. 基本字符 I V

OJ刷题---罗马数字转十进制

题目要求: 输入代码: #include<iostream> using namespace std; int main() { int i,j,n,k; int num[7]= {1, 5,10,50,100,500,1000}; //罗马数字转换模板 char str[7]= {'I','V','X','L','C','D','M'}; int a[7];//定义一个转换成十进制的保存数组 char pL[7];//要输入的罗马数字 cin>>n; for(i=0; i<

Leetcode——罗马数字和阿拉伯数字的转换

说实话,这两道在leetcode上标记为中等和简单的题却让我蛋疼了半天.可能是因为先天对阿拉伯数字不熟悉的关系,所以在做两道题的居然没有一点感觉!!!!! 将罗马数字转化为阿拉伯数字比较简单:从左向右扫描整个字符串既可,只有在前一个数字比后一个数字小的时候需要做特殊处理(需要做减法). class Solution  { public: int romanToInt(string s) { if (s.empty()) { return 0; } int letter[256]; for (in

罗马数字转阿拉伯数字

罗马数字转阿拉伯数字 1.罗马数字是位置计数吗?它的缺点是什么? 答:罗马数字不是位置技术,他的缺点:书写困难,规则繁杂,没有数字0 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M.(python) 字符          数值 I             1 V             5 X             10 L             50 C             100 D             500 M             1000 2.将学号2

Roman To Integer leetcode java

问题描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 算法: /** * 输入一个罗马数字,返回它的整型表示 * @author admin * 转换规则:从右向左依次转换 * 1 相同数字连写,相加 ;2 小数字在大数字右边,相加;3 小数字在大数字左边,大的减去小的 */ //将罗马数字转换为整型值 public sta

【Leetcode-easy】Roman to Integer

罗马数字转化为整数 * 1.基本数字 Ⅰ.X .C 中的任何一个.自身连用构成数目.或者放在大数的右边连用构成数目.都不能超过三个:放在大数的左边只能用一个: * 2.不能把基本数字 V .L .D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目:放在大数的右边采用相加的方式构成数目.只能使用一个: * 3.V 和 X 左边的小数字只能用 Ⅰ: * 4.L 和 C 左边的小数字只能用X: * 5.D 和 M 左边的小数字只能用 C. 思路:顺序读取字符,如果前面后面一位大于前面一位,则

2.2.1 Preface Numbering

数字比较小,所以题目的难点就转到了,阿拉伯数字向罗马数字转化的过程了. 转化也不难.我直接手算了,值得注意的是8的写法VIII(不是IIX). 整体来说不难.只要观察出每一位是相互独立的就行. 具体代码如下: /* ID: awsd1231 PROG: preface LANG: C++ */ #include<iostream> #include<cstdio> #include<vector> #include<map> using namespace