NYOJ 484 The Famous Clock

来源:互联网 发布:mac word 选择对象 编辑:程序博客网 时间:2024/06/05 01:10

The Famous Clock

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

Mr. B, Mr. G and Mr. M are now in Warsaw, Poland, for the 2012’s ACM-ICPC World Finals Contest. They’ve decided to take a 5 hours training every day before the contest. Also, they plan to start training at 10:00 each day since the World Final Contest will do so. The scenery in Warsaw is so attractive that Mr. B would always like to take a walk outside for a while after breakfast. However, Mr. B have to go back before training starts, otherwise his teammates will be annoyed. Here is a problem: Mr. B does not have a watch. In order to know the exact time, he has bought a new watch in Warsaw, but all the numbers on that watch are represented in Roman Numerals. Mr. B cannot understand such kind of numbers. Can you translate for him?

输入
Each test case contains a single line indicating a Roman Numerals that to be translated. All the numbers can be found on clocks. That is, each number in the input represents an integer between 1 and 12. Roman Numerals are expressed by strings consisting of uppercase ‘I’, ‘V’ and ‘X’. See the sample input for further information.
输出
For each test case, display a single line containing a decimal number corresponding to the given Roman Numerals.
样例输入
IIIIIIIVVVIVIIVIIIIXXXIXII
样例输出
Case 1: 1Case 2: 2Case 3: 3Case 4: 4Case 5: 5Case 6: 6Case 7: 7Case 8: 8Case 9: 9Case 10: 10Case 11: 11Case 12: 12


注:此题为:南阳OJ 题目484 The Famous Clock

说明:关键在于X和V是否在第一位,由于X或V只有一侧有 I       所以

                 X或V在第一位做加加法运算,否则做减法运算,最后取正值就OK了

已AC源代码:

#include<stdio.h>#include<string.h>int main(){char ch[5];int i,len,k=1;while(scanf("%s",ch)!=EOF){int m=0;len=strlen(ch);for(i=0;i<len;++i){if(ch[i]=='I')    m++;else if(ch[i]=='V'&&i!=0)    m-=5;else if(ch[i]=='X'&&i!=0)    m-=10;else if(ch[i]=='V'&&i==0)    m+=5;else    m+=10;}if(m<0)    m*=-1;printf("Case %d: %d\n",k++,m);}return 0;}




0 0