问题链接:HDU2352 Verdis Quo。
这个问题是将罗马数转换为阿拉伯数的问题。
阿拉伯记数法是最为方便的记数方法,为世界的人们所普遍采用。
这个问题用C++编程比较方便简洁。
AC的C++语言程序如下:
/* HDU2352 Verdis Quo */ #include <iostream> #include <map> using namespace std; map<string, int> num; int main() { int t, ans, t1, t2, i; string s, key; num["I"] = 1; num["V"] = 5; num["X"] = 10; num["L"] = 50; num["C"] = 100; num["D"] = 500; num["M"] = 1000; cin >> t; while(t--) { // 输入罗马数 cin >> s; // 转换 key = s.substr(s.length()- 1, 1); ans = t2 = num[key]; for(i = s.length()- 2; i>=0; i--) { key = s.substr(i, 1); t1 = num[key]; if(t2 > t1) ans -= t1; else ans += t1; t2 = t1; } // 输出结果 cout << ans << endl; } return 0; }