80,最后两个应该是大数,蒟蒻瑟瑟发抖
查看原帖
80,最后两个应该是大数,蒟蒻瑟瑟发抖
408312
FunShared楼主2021/2/15 14:34
#include<stdio.h>
#include<string.h>
int recheck(int n,int a)
{
    int i,j,t;
    char ch1[10],ch2[10];
    for(i=1;i<=n;i++)
    {
        ch1[i-1]=i;
    }
    ch1[n]='\0';
    for(i=0;i<n;i++)
    {
        ch2[i]=a%10;
        a/=10;
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-1;j++)
        {
            if(ch2[j]>ch2[j+1])
            {
                t=ch2[j];
                ch2[j]=ch2[j+1];
                ch2[j+1]=t;
            }
        }
    }
    ch2[n]='\0';
    if(strcmp(ch1,ch2)==0)
    {
        return 1;
    }
    else
        return 0;
}
void check(int n,int *p,int max,int min)
{
    int i;
    for(i=min;i<=max;i++)
    {
        if(recheck(n,i)==1)
        {
            *p=i;
            p++;
        }
    }
}
int main()
{
    int n,a,max=0,min=0,i,q=1;
    static str[10];
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        q*=i;
    }
    scanf("%d",&a);
    for(i=n;i>0;i--)
    {
        max+=i;
        max*=10;
    }
    max/=10;
    for(i=1;i<=n;i++)
    {
        min+=i;
        min*=10;
    }
    min/=10;
    check(n,&str[0],max,min);
    for(i=0;i<q;i++)
    {
        if(a==str[i])
        {
            printf("%d",i+1);
            break;
        }
    }
    return 0;
}
2021/2/15 14:34
加载中...