zoukankan      html  css  js  c++  java
  • POJ 1715

    同样是确定某位上的数,当确定某一位后,其后面的排列数是确定的,所以可以用除法和取余数的方法来确定这一位的值

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    int lim[10];
    bool vis[20];
    int ans[20],ansl;
    void initial(){
    	lim[9]=0;
    	lim[8]=486486000;
    	lim[7]=540540000;
    	lim[6]=545945400;
    	lim[5]=546436800;
    	lim[4]=546477750;
    	lim[3]=546480900;
    	lim[2]=546481125;
    	lim[1]=546481140;
    }
    
    int judge(int &n){
    	for(int i=8;i>=1;i--){
    		if(n<=lim[i]){ 
    			n=n-lim[i+1];
    			return i;
    		}
    	}
    }
    
    int getnum(int bt,int hw){
    	int sum=1;
    	for(int i=hw;i>0;i--){
    		sum=sum*bt;
    		bt--;
    	}
    	return sum;
    }
    
    void enAns(int w){
    	for(int i=15;i>=0;i--){
    		if(w==0){
    			if(!vis[i]){
    				ans[ansl++]=i;
    				vis[i]=true;
    				return ;
    			}
    			else{
    				continue;
    			}
    		}
    		else{
    			if(!vis[i]){
    				w--;
    			}
    			else{
    				continue;
    			}
    		}
    	}
    }
    
    void work(int num,int hw){
    	int bt=16;
    	int tmp,word;
    	for(int i=hw-1;i>=0;i--){
    		bt--;
    		tmp=getnum(bt,i);
    		word=num/tmp;
    	//	cout<<word<<endl;
    		num%=tmp;
    		enAns(word);
    	}
    }
    
    int main(){
    	initial();
    	int n;
    	while(scanf("%d",&n)!=EOF){
    		memset(vis,false,sizeof(vis));
    		ansl=0;
    		if(n==546481141){
    			printf("0
    ");
    			continue;
    		}
    		int hw=judge(n);
    		n--;
    	//	cout<<hw<<endl;
    		work(n,hw);
    		for(int i=0;i<ansl;i++){
    			if(ans[i]>=10){
    				printf("%c",ans[i]-10+'A');
    			}
    			else printf("%c",ans[i]+'0');
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    ibatis报错
    struts配置时遇到的几个问题
    快乐工作,快乐生活
    浅谈协方差矩阵理解篇
    类成员变量初始化
    类对象所占内存空间总结
    const 成员函数
    Qt对话框QDialog
    const引用返回值
    Qt 对象间的父子关系
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3999055.html
Copyright © 2011-2022 走看看