阅读背景:

水题堆2.C - Subset sequence

来源:互联网 
#include <stdio.h>
#include <stdlib.h>

int main()
{
    long long m,s[21];
    int n,k,i;
    s[0]=0;
    for(i=1;i<=20;i++)s[i]=(i-1)*s[i-1]+1;
    while(scanf("%d%lld",&n,&m)!=EOF){
        int f[21];
        for(i=1;i<=20;i++){
            f[i]=i;
        }
        while(m&&n){
            if(m%s[n]==0)k=m/s[n];
            else k=m/s[n]+1;
            if(k){
                printf("%d",f[k]);
                for(i=k;i<=n;i++){
                    f[i]=f[i+1];//这里用f[i]++不行
                }
                m=m-((k-1)*s[n]+1);
            }
            if(m==0)printf("\n");
                else printf(" ");
            n--;
        }
    }
    return 0;
}#include <stdio.h>
#include <stdlib.h>

int mai



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: