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\n");
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("\n");
}
return 0;
}
POJ 1715的更多相关文章
- poj 1715 Hexadecimal Numbers 排列组合
/** 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同. 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说,能做成的排列数为15*A(1 ...
- JAVA大数--POJ 1715 大菲波数
Problem Description Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值. Inp ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 转载:poj题目分类(侵删)
转载:from: POJ:http://blog.csdn.net/qq_28236309/article/details/47818407 按照ac的代码长度分类(主要参考最短代码和自己写的代码) ...
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
题目链接: PKU:http://poj.org/problem? id=3653 ZJU:problemId=1934" target="_blank">http ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
随机推荐
- Android ViewGroup拦截触摸事件具体解释
前言 在自己定义ViewGroup中.有时候须要实现触摸事件拦截.比方ListView下拉刷新就是典型的触摸事件拦截的样例. 触摸事件拦截就是在触摸事件被parent view拦截,而不会分发给其ch ...
- 解决 Mac OS X 10.11 安装 sip 没有权限的问题
在搭建 PYQT 的过程中我遇上了一个非常恶心的问题,在安装 sip 的时候编译源代码之后的安装过程中一直提示我:Operation not permitted ,我甚至重装了系统也无济于事,终于通过 ...
- 使用CSStickyHeaderFlowLayout实现头部固定的CollectionView
近期流行的一种界面效果,是瀑布流的header固定,也叫sticky header或者parallax.对于UITableView,能够比較方便地让table header固定,可是对于UIColle ...
- Java——动态代理
在静态代理中,我们在调用target类的时候,都是先拿到proxy类.由于proxy类中将target类作为了成员变量,而且跟target类继承了一样的接口,具有同样的方法,所以,在proxy类中.通 ...
- MFC窗口去边框、置顶、全屏、激活
静态移除长提边框非常easy,直接设置"Border"属性为"none"就可以 "Maximize Box", "Minimize ...
- c:forTokens标签delims截取字符
转自:https://blog.csdn.net/love398146779/article/details/83853958 两个name要相同,在里边内容为空的时候才会全显示. <logic ...
- 从git源码安装zabbix-agent
从网上随便找了几个image,都是从svn下载的代码,根本跑不了,于是自己重新做了个,从git上拿的源码,只是build出来的image有点大,有时间再优化了 Dockerfile FROM cent ...
- 循环引用的weak和assgin
__weak 当对象销毁后weakSelf指向的地址为nil __unsafe_unretained 挡圈对象销毁后,weakSelf执行的地址为不变,而地址对应对象已经销毁,再次访问该对象就崩溃,相 ...
- NSURLSession简介
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- Android 多个APK共享数据
Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户(Android 系统是基于Linux)的.所以不同APK(用户)间互相访问数据默认是 ...