c_cpp 罗马数字到十进制数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 罗马数字到十进制数相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;

// Roman numerals to decimal number
/* 
	I V X  L  C   D
	1 5 10 50 100 500
	
	Test Case:
	DCIV = 500+100+(-1+5)= 604
	Output:
	604
*/

int RomToDec(string x);
int conv(char c);

int main(){
	int t;
	cin>>t;
	while(t--){
		string x;
		cin>>x;
		cout<<RomToDec(x)<<endl;
	}
	return 0;
}

int RomToDec(string x){
	long ans=0;
	int n=x.size();
	ans+=conv(x[n-1]);
	for(int i=n-2;i>=0;i--){
		int l=conv(x[i]);
		int r=conv(x[i+1]);
		if(l>=r){
			ans+=l;
		}else{
			ans-=l;
		}
	}
	return ans;
}
int conv(char c){
	if(c=='I'){
		return 1;
	}
	if(c=='V'){
		return 5;
	}
	if(c=='X'){
		return 10;
	}
	if(c=='L'){
		return 50;
	}
	if(c=='C'){
		return 100;
	}
	if(c=='D'){
		return 500;
	}
}


以上是关于c_cpp 罗马数字到十进制数的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp [十进制数转罗马数字]将一个十进制数字符串转换为罗马数字字符串#字符串处理

c_cpp 找到二进制数1。

c_cpp 在排序的二进制数组中计数1

c_cpp 找到大量数字中最大的k数。您无法对数组进行排序。

将 django 表单(formset)中的十进制数加载到数字输入中

c_cpp 将根与叶数相加。给定仅包含0-9的数字的二叉树,每个根到叶路径可以表示数字。一个例子