2013年12月8日 星期日

[USACO] 2-2-1 Preface Numbering


/*
ID: 551100k1
LANG: C++
TASK: preface
*/
#include<stdio.h>
#include<map>
#include<iostream>
using namespace std;
map<char,int> ma;
map<char,int>::iterator k;
string s[5][10]={
                {"","I","II","III","IV","V","VI","VII","VIII","IX"},
                {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
                {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
                {"","M","MM","MMM"}
                };
string out="IVXLCDM",in;
void calc(int a,int b){
    int i;
    in=s[a][b];
    for(i=0;i<in.length();i++)
        ma[s[a][b][i]]++;
}
int main(){
    freopen("preface.in","r",stdin);
    freopen("preface.out","w",stdout);
    int p,k=0,n,i,m;
    scanf("%d",&m);
    for(i=1;i<=m;i++){
        n=i,k=0;
        while(n){
            p=n%10;
            calc(k,p);
            n/=10;
            k++;
        }
    }
    for(i=0;i<out.length();i++){
        if(ma[out[i]]!=0){
            printf("%c %d\n",out[i],ma[out[i]]);
        }
    }
}

沒有留言:

張貼留言