互异数

news2024/11/20 22:42:47

这道题是实验舱举办的"编程一小时"千人马拉松竞赛的第三题!

目录

#C、互异数

题目描述

输入格式

输出格式

输入样例1

输出样例1

输入样例2

输出样例2

数据规模

思路:

  1.最大互质数

  2.互质数的数量

  3.贪心策略

总代码:

总结:

题目链接:


#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. 33

输出样例1

 
  1. 23

输入样例2

 
  1. 546481140

输出样例2

 
  1. FEDCBA98

数据规模

对于30\%30%的数据,1 \leq K \leq 10^31≤K≤103
对于70\%70%的数据,1 \leq K \leq 10^71≤K≤107
对于100\%100%的数据,1 \leq K \leq 533194120811401≤K≤53319412081140

思路:

  1.最大互质数

不难想到

  • 最大的互异数为FEDCBA9876543210

  2.互质数的数量

  • 长度为 lenlen 的互异数有 15 \times A_{15}^{len-1}15×A15len−1​ 个

一共有 \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​,继续考虑下一个数位

总代码:
 

#include <bits/stdc++.h>
using namespace std;
long long k, fac[21], len = 16, cnt[21], b[21], T = 53319412081140;
bool vis[21];
char str[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
long long A(int n, int m)
{
  if (m > n)
    return 0;
  return fac[n] / fac[n - m];
}
int main()
{
  #endif
  fac[0] = fac[1] = 1;
  for (int i = 2; i <= 21; i++)
    fac[i] = fac[i - 1] * i;
  scanf("%lld", &k);
  for (int i = 16; i; i--)
    cnt[i] = cnt[i + 1] + 15 * A(15, i - 1); //求出各数位的互异数个数,求出前缀和
  k = T - k + 1; //转成全局第 S 大
  while (k > cnt[len]) //确定位数
    len--;
  k -= cnt[len + 1]; //转为长度为 len 的第 S 大
  for (int i = 1; i <= len; i++) //逐数位考虑
    for (int j = 15; j >= (i == len ? 1 : 0); j--)
    {
      if (vis[j])
        continue;
      long long x = A(16 - i, len - i);
      if (k > x)
        k -= x;
      else
      {
        vis[j] = true, putchar(str[j]);
        break;
      }
    }
  return 0;
}

总结:

  这人道题重要的是自己去想自己去算,最后推出来是贪心的策略!

题目链接:

登录https://oj.shiyancang.cn/Contest/Problem/3054.html?index=2&cid=5533&type=4 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Typora使用之在腾讯云建立远程图床【多图】

1 安装PicGo PicGo是一款功能非常强大的图床的工具&#xff0c;支持SM.MS、腾讯COS、GitHub图床、七牛云图床、Imgur图床、阿里云OSS等多种图床平台。 下载地址&#xff1a;https://github.com/Molunerfinn/PicGo/releases 一般安装PicGo-Setup-2.3.0-beta.7-ia32.exe。 可以选…

C++模板特化

前言 模板特化对函数和函数都可以使用。它的作用是以某一模板函数或某个模板类为例&#xff0c;大部分情况下需要写的函数或内容是一致的&#xff0c;但是有些特别情况&#xff0c;所以我们需要单独拎出来。 模板参数 模板参数可分为类型形参和非类型形参。 类型形参&#x…

消息中间件(消息队列)

简介 MQ&#xff08;message queue&#xff09;消息队列&#xff0c;也叫消息中间件。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。它是类似于数据库一样需要…

残差网络~

搬来这个 给自己学学啊,残差网络解决了什么&#xff0c;为什么有效 从深度神经网络的两大难题入手&#xff0c;说说残差网络的形式化定义与实现&#xff0c;并深入探讨其作用的机制&#xff0c;并结合文献对残差网络有效性进行了一些可能的解释。 残差网络是深度学习中的一个…

【论文阅读】(2020)Knapsack polytopes: a survey(下)

文章目录六、Valid inequalities, separation and computations 有效的不等式&#xff0c;分离和计算七、Complete linear descriptions of particular knapsack polytopes 特定背包多形体的完整线性描述7.1 Extended formulations7.2 Complete linear descriptions 完整的线性…

JavaFx TreeView TreeItem 设置额外属性

在使用JavaFx 编写GUI程序时&#xff0c;不可避免的需要创建一个树组件,下面是一个简单的树组件的代码。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.s…

clickhouse笔记05--快速部署3节点集群

clickhouse笔记05--快速部署3节点集群1 介绍2 方法步骤2.1 部署 zookeeper 集群2.2 拉起 clickhouse 集群2.3 测试集群3 注意事项4 说明1 介绍 clickhouse笔记01–快速部署clickhouse 介绍了如何快速部署单节点clickhouse服务&#xff0c;本文基于该博文继续介绍如何快速部署3…

Java进阶—JUC编程

1、线程和进程 获取CPU核数 /*** author java小豪* version 1.0.0* date 2022/12/15* description 测试*/ public class Test {public static void main(String[] args) {// 获取CPU核数// CPU 密集型&#xff0c;IO密集型System.out.println(Runtime.getRuntime().available…

响应式营销策划文化传媒公司网站模板源码

模板信息&#xff1a; 模板编号&#xff1a;8071 模板编码&#xff1a;UTF8 模板颜色&#xff1a;蓝色 模板分类&#xff1a;设计、广告、文化、影视 适合行业&#xff1a;影视传媒类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xf…

qt5实现pdf阅读器(三)——pdfjs

目录 1、参考 2、实现 3、开发记录 1、参考 使用Qt的WebEngine和javascript的pdf.js模块构建的PDF查看器。 参考链接1&#xff1a;GitHub - Archie3d/qpdf: PDF viewer widget for Qt 参考链接2&#xff1a;GitHub - yshurik/qpdfjs: Desktop PDF Viewer based on Qt and…

讯飞听见SaaS服务迈入全新时代

配图来自Canva可画 随着数字化时代的来临&#xff0c;国内各企业为了提升行业竞争力&#xff0c;纷纷开始利用数字化技术&#xff0c;来实现以降本增效为核心的数字化转型&#xff0c;得益于此&#xff0c;助力企业数字化转型升级的SaaS也开始进一步升温。 众所周知&#xff…

【代码审计-2】PHP框架MVC类文件上传断点测试挖掘

1.文件上传漏洞挖掘&#xff1a; (1)关键字搜索&#xff08;函数、键字、全局变量等&#xff09;&#xff1a;比如$_FILES&#xff0c;move_uploades_file等 (2)应该功能抓包&#xff1a;寻找任何可能存在上传的应用功能点&#xff0c;比如前台会员中心&#xff0c;后台新闻添…

电力系统两阶段随机优化(Matlab实现)

目录 目录 1 概述 2 单级随机优化算法 2.1 随机化-最小化 2.2 随机逐次凸近似 &#xff08;SCA&#xff09; 3 两级随机优化算法 3.1 批处理算法 3.2 在线算法 4 Matlab代码实现 1 概述 在与随机系统状态向量关联的两阶段随机优化问题中&#xff0c;优化变量分为两组…

Web前端105天-day32-HTML5_CORE

HTML5CORE02 目录 前言 一、复习 二、拖拽 三、上传服务器 四、Canvas 五、地图 总结 前言 HTML5CORE02学习开始 一、复习 跨域 浏览器的同源策略导致在网页中, 通过 AJAX 发送网络请求时, 默认只能向同源的服务器请求同源: 协议 端口号 域名 三者都相同产生跨域的原因…

RocketMQ疑难杂症之No route info of this topic解决方案

成因&#xff1a; 由于配置了 docker 虚拟 IP&#xff0c;导致 brocker 总是代理到 docker 的虚拟 IP 上。 原理&#xff1a; RocketMQ 的 broker 启动类 org.apache.rocketmq.broker.BrokerStartup 启动的时候会读取代码中的默认配置&#xff0c;关于 broker 的配置在 org.apa…

【关于时间序列的ML】项目 8 :使用 Facebook Prophet 模型预测股票价格

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

30.深度学习模型压缩方法-4

30.1 低秩分解 基于低秩分解的深度神经网络压缩与加速的核心思想是利用矩阵或张量分解技术估计并分解深度模型中的原始卷积核 卷积计算是整个卷积神经网络中计算复杂 度 最 高 的 计 算 操 作,通 过 分 解4D 卷积核张量,可以有效地减少模型内部的冗余性此外对于2D的全 连…

Hive+Spark离线数仓工业项目实战--项目介绍及环境构建(1)

项目简介 通过大数据技术架构&#xff0c;解决工业物联网制造行业的数据存储和分析、可视化、个性化推荐问题。一站制造项目主要基于Hive数仓分层来存储各个业务指标数据&#xff0c;基于sparkSQL做数据分析。核心业务涉及运营商、呼叫中心、工单、油站、仓储物料。 推荐教程…

DSP_TMS320F28377D_eCAP学习笔记

博主学习eCAP的使用主要是用于处理霍尔传感器&#xff0c;计算电机的电角度以及角速度。首先还是看了点哔哩哔哩的学习视频。 eCAP介绍 脉冲量的输入是在数字控制系统中最常见的一类输入量&#xff0c;控制器专门设置了脉冲捕获模块 (eCAP)来处理脉冲量&#xff0c;通过脉冲捕…

路由器的工作原理(计算机网络-网络层)

目录 路由器的构成 转发和路由选择的区别 典型的路由器结构 交换结构 输出端口 路由器与交换机的比较 两种基于存储转发的分组交换设备的比较 交换机和路由器各有的应用场合 三层交换机 三层交换机的应用 路由器的构成 路由器的任务 路由器是一种具有多个输入端口和多…