2015年1月28日 星期三

TIOJ 1048 D.亞洲經濟合作會議

#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int pp[15];
bool flag[15];
char ans[15];
int n,m;
char al(int x){
    int cnt=0;
    int i=0;
    for(i=0;i<n;i++){
        if(flag[i]&&cnt==x)
            break;
        if(flag[i])
            cnt++;
    }
    flag[i]=false;
    return i+65;
}
int main(){
    pp[0]=1;  
    pp[1]=1;
    for(int i=2;i<=12;i++)
        pp[i]=pp[i-1]*i;
    while(true){
        scanf("%d %d",&n,&m);
        if(n==0&&m==0)
            break;
        m--;
        m%=pp[n];
        for(int i=0;i<15;i++)
            flag[i]=true;
        
        for(int i=0;i<n;i++){
            int mm=m/pp[n-1-i];
            m%=pp[n-1-i];
            ans[i]=al(mm);
        }
        ans[n]='\0';
        for(int i=0;i<n-1;i++)
            printf("%c ",ans[i]);
        printf("%c\n",ans[n-1]);
    }
}

沒有留言:

張貼留言