1 条题解

  • 0
    @ 2025-4-12 22:06:17

    C++ :

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int aa[7]={0};
    char* a[4][10];
    char b[7]={'I','V','X','L','C','D','M'};
    void doo(int as)
    {
    	int an=0;
    	int n=0;
    	while(as!=0)
    	{
    		if (as%10!=0)
    		{
    			for (int i=0;i<strlen(a[n][as%10]);i++)
    			switch (a[n][as%10][i])
    			{
    			case 'I':{aa[0]++;break;}
    			case 'V':{aa[1]++;break;}
    			case 'X':{aa[2]++;break;}
    			case 'L':{aa[3]++;break;}
    			case 'C':{aa[4]++;break;}
    			case 'D':{aa[5]++;break;}
    			case 'M':{aa[6]++;break;}
    			}
    		}
    		as=as/10;
    		n++;
    	}
    }
    int main()
    {
    	//freopen("F:\\TestFiles\\test1.in","r",stdin);
    	//freopen("F:\\TestFiles\\test3.out","w",stdout);
    	a[0][1]="I";a[0][2]="II";a[0][3]="III";a[0][4]="IV";a[0][5]="V";a[0][6]="VI";a[0][7]="VII";a[0][8]="VIII";a[0][9]="IX";
    	a[1][1]="X";a[1][2]="XX";a[1][3]="XXX";a[1][4]="XL";a[1][5]="L";a[1][6]="LX";a[1][7]="LXX";a[1][8]="LXXX";a[1][9]="XC";
    	a[2][1]="C";a[2][2]="CC";a[2][3]="CCC";a[2][4]="CD";a[2][5]="D";a[2][6]="DC";a[2][7]="DCC";a[2][8]="DCCC";a[2][9]="CM";
    	a[3][1]="M";a[3][2]="MM";a[3][3]="MMM";
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		memset(aa,0,sizeof(aa));
    		for (int i=1;i<=n;i++)
    			doo(i);
    		for (int i=0;i<7;i++)
    			if (aa[i]) printf("%c %d\n",b[i],aa[i]);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    2840
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者