1 条题解

  • 0
    @ 2025-4-12 22:03:05

    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
    上传者