2013年10月16日 星期三

[NICE_September] pC-順序數(Increase1)


#include<stdio.h>
int s[100000],n,top=0;
char in[15]={0};
void dfs(int v,int k){
    int i,out;
    if(v==n){
        sscanf(in,"%d",&out);
        s[top++]=out;
        //printf("%d.",out);
        return;
    }
    if(k==10) return;
    for(i=k;i<10;i++){
        in[v]=i+'0';
        dfs(v+1,i);
    }
}
int main(){
    int i,l,r,m,a,b,add;
    for(i=1;i<10;i++){
        n=i;
        dfs(0,1);
    }
    s[top++]=1234567899;
    scanf("%d%d",&a,&b);
    b++;
    l=0,r=top;
    while(l+1!=r){
        m=(l+r)/2;
        if(b>s[m]) l=m;
        else r=m;
    }
    add=l;
    l=0,r=top;
    while(l+1!=r){
        m=(l+r)/2;
        if(a>s[m]) l=m;
        else r=m;
    }
    add-=l;
    printf("%d\n",add);
}

沒有留言:

張貼留言