1 条题解
-
0
C :
#include<stdio.h> void F(int n) { if (n < 8) printf("%d", n); else { F(n / 8); printf("%d", n % 8); } } int main() { char roma[10]; int num, i, first, next; while (scanf("%s",roma) != EOF) { num = 0; i = 0; while (roma[num] != 0) { if (roma[num] == 'I') { first = 1; } if (roma[num] == 'V') { first = 5; } if (roma[num] == 'X') { first = 10; } if (roma[num] == 'L') { first = 50; } if (roma[num] == 'C') { first = 100; } if (roma[num] == 'D') { first = 500; } if(roma[num]=='M') first = 1000; if(roma[num+1]=='I') next = 1; if(roma[num+1] == 'V') next=5; if(roma[num+1]=='X') next=10; if(roma[num+1]=='L') next=50; if(roma[num+1]=='C') next=100; if(roma[num+1]=='D') next=500; if(roma[num+1]=='M') next=1000; if(first<next) { i=i+next-first; num++; } if(first>=next) { i=i+first; } first=0; next=0; num++; } if(i == 100) break; F(i); printf("\n"); } return 0; }
C++ :
#include <stdio.h> int get_convert (char a[],int num[]); void num_convert (char a[],int num[]); enum { NUM=15 }; enum { END=100 }; int main() { char a[NUM]; int input_num=0,num[NUM]; while (input_num!=END) { if (scanf("%s",a)==EOF) break; input_num=get_convert(a,num); if (input_num==END) break; else printf("%o\n",input_num); } return 0; } int get_convert (char a[],int num[]) { num_convert(a,num); int i=0,s=0; for (i=0;num[i]!=-1;i++) { if (i==0) s=num[i]; else if (num[i]<num[i-1]) s-=num[i]; else s+=num[i]; } return s; } void num_convert (char a[],int num[]) { int i=0,j=0; int temp[NUM]; for (i=0;a[i]!='\0';i++) { switch (a[i]) { case 'I':temp[i]=1;break; case 'V':temp[i]=5;break; case 'X':temp[i]=10;break; case 'L':temp[i]=50;break; case 'C':temp[i]=100;break; } } num[i]=-1; j=i-1; for (i=0;j>=0;j--,i++) { num[i]=temp[j]; } }
- 1
信息
- ID
- 2759
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者