ZOJ-2939
来源:互联网 发布:大连pmp培训 知乎 编辑:程序博客网 时间:2024/05/21 15:40
罗马数字转换,也没啥难度,直接按规则写就行了
#include<stdio.h>#include<string.h>static int map[26];static void print(int num){int i, d = num / 1000;for (i = 0; i < d; i++)putchar('M');d = (num / 100) % 10;if (d == 9)printf("%s", "CM");else if (d == 4)printf("%s", "CD");else{if (d >= 5)putchar('D');for (i = 0; i < d % 5; i++)putchar('C');}d = (num / 10) % 10;if (d == 9)printf("%s", "XC");else if (d == 4)printf("%s", "XL");else{if (d >= 5)putchar('L');for (i = 0; i < d % 5; i++)putchar('X');}d = num % 10;if (d == 9)printf("%s", "IX");else if (d == 4)printf("%s", "IV");else{if (d >= 5)putchar('V');for (i = 0; i < d % 5; i++)putchar('I');}}static int number(char *s){int i, res = 0;for (i = 0; s[i] != '\0'; i++)if ((s[i] == 'I' || s[i] == 'X' || s[i] == 'C')&& map[s[i] - 'A'] < map[s[i + 1] - 'A']){res += map[s[i + 1] - 'A'] - map[s[i] - 'A'];i++;}elseres += map[s[i] - 'A'];return res;}int main(){map['I' - 'A'] = 1;map['V' - 'A'] = 5;map['X' - 'A'] = 10;map['L' - 'A'] = 50;map['C' - 'A'] = 100;map['D' - 'A'] = 500;map['M' - 'A'] = 1000;int n, i, count = 0;char s[20];while (scanf("%d", &n), n){getchar();int sum = 0;for (i = 0; i < n; i++){scanf("%s", s);sum += number(s);}printf("Case ");print(++count);printf(": ");print(sum);putchar('\n');}return 0;}
0 0
- ZOJ-2939
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- Mac系统操作:桌面顺序改变
- 堆喷射原理
- 64位win7下Android SDK Manager闪退的解决方法
- GLSL/HLSL易犯错误和注意点
- 黑马程序员_Java中的时间类
- ZOJ-2939
- android actionbar 不能显示overflow
- android:layout_weight属性详解
- neu之路
- 条款9:绝不在构造函数和析构函数中调用virtual 函数
- ASP.NET MVC 资料汇总
- 工作遇到的问题
- mybatis使用步骤
- 得到远程主机操作系统类型(只适用于发现NT5.2及以下系统)