| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 互异数 -> 正文阅读 |
|
[数据结构与算法]互异数 |
这道题是实验舱举办的"编程一小时"千人马拉松竞赛的第三题! 目录 #C、互异数题目描述在1616进制下,如果一个数字的各个数位上的值都互不相同那么称这个数为互异数 如9,A,1A9,A,1A等 前2020个互异数为: 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,12,13,14,151,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,12,13,14,15 现在需要你找出第KK小的互异数 输入格式输入一个整数KK 输出格式输出1616进制下第KK小的互异数 输入样例1
输出样例1
输入样例2
输出样例2
数据规模对于30\%30%的数据,1 \leq K \leq 10^31≤K≤103 思路:? 1.最大互质数不难想到
? 2.互质数的数量
一共有?\displaystyle \sum_{i=1}^{16} 15 \times A_{15}^{i-1} = 53319412081140i=1∑16?15×A15i?1?=53319412081140?个互异数 求第KK小较为不易 ? 3.贪心策略确定第?KK?小互异数的长度?lenlen,不妨转化为求长度为?lenlen?的第?SS?大 从高到低逐数位贪心考虑填入\text{0} \sim \text{F}0~F,每个数位从?\text{F} \rightarrow \text{0}F→0?尝试放入(首位忽略00,已放过的值不再考虑) 设当前从高到低考虑到第?pp?个数位,当前尝试的数位值为?c_pcp? 若当前数位已确定,那么?p+1 \sim lenp+1~len?数位构成的互异数有A_{16-p}^{len-p}A16?plen?p?个 若S \gt A_{16-p}^{len-p}S>A16?plen?p? 说明此时c_pcp?贡献排名不够尝试更小的数位 同时令?S\leftarrow S - A_{16-p}^{len-p}S←S?A16?plen?p? 若此时?S \leq A_{16-p}^{len-p}S≤A16?plen?p? 说明此时c_pcp?贡献排名足够,当前数位值已经确定为c_pcp?,继续考虑下一个数位 总代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 14:43:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |