Good Bye 2023

在这里插入图片描述

Good Bye 2023

Good Bye 2023

A. 2023

题意:序列a中所有数的乘积应为2023,现在给出序列中的n个数,找到剩下的k个数并输出,报告不可能。

思路:把所有已知的数字乘起来,判断是否整除2023,不够的k补1,注意当前乘积已经大于2023的情况。

AC code:

void solve() {cin >> n >> k;int now = 1;for(int i = 0; i < n; i ++) {int x; cin >> x;a[i] = x;now *= x;}if(2023 % now || now > 2023) {cout << "NO" << endl;return;}cout << "YES" << endl;k -= 1;while(k --) cout << 1 << " ";cout << 2023 / now << endl;//cout << "Good Bye 2023" << endl;
}

B. Two Divisors

题意:给出正整数的两个最大的除数a和b,求x。

思路:首先是找出a和b的最小公倍数lcm,然后判断lcm是否为较大的除数:

如果是,说明a是b的除数,且a和b还是x最大的两个除数,当前的最小公倍数是b,b/a为当前b最大能放大的倍数,则x=b*(b / a);

否则,x=lcm。

AC code:

int gcd (int a, int b) {if(b) while((a%=b) && (b%=a)); return a + b;
}void solve() {int a, b; cin >> a >> b;int lcm = a * b / gcd(a, b);if (lcm != b) {cout << lcm << endl;return;}cout << b * b / a << endl;
}

C. Training Before the Olympiad

题意:

在一个长度为n的正整数数组中,A和B轮流操作:

  • 每次选择两个不同的索引i和j,然后在数组中删除 a i a_i ai a j a_j aj,在数组中加入[( a i a_i ai+ a j a_j aj)/2] *2,A先起手,直到数组元素为1游戏结束;

  • A目标是最大化最终数字,B目标是最小化最终数字;

  • 现在针对数组a的每个前缀数字进行操作,每个前缀的最终数字是多少。

思路:

看奇偶:

  • 每次操作选择的两元素奇偶性相同则操作不会影响最终结果,否则会对最终结果-1;
  • 奇数才是影响最终结果的关键,AB无论怎么选择,一次操作后的数字必定是偶数;
  • 对A来说是尽可能选择奇偶性相同的元素,对B则是选择奇偶性不同的元素来缩小最终结果:
  • A优先选择成对的奇数来减少奇数的数量,一次减少2个奇数,选择一个奇数一次减少1个奇数:
    • 首先前缀和奇数的数量;
    • 各一轮下来最多消灭三个奇数,一次结果-1,再看多出的奇数若为1结果额外-1。

AC code:

void solve() {cin >> n;vector<int> cnt(n + 1, 0);vector<int> sum(n + 1, 0);for (int i = 1; i <= n; i ++) {cin >> a[i];sum[i] = sum[i - 1] + a[i];cnt[i] = cnt[i - 1] + (a[i] % 2 != 0);}for(int i = 2; i <= n; i ++) {if(cnt[i] == 1){sum[i] -= 1;continue;}sum[i] -= (cnt[i] / 3) + (cnt[i] % 3 == 1);}for(int i = 1; i <= n; i ++) cout << sum[i] << " ";cout << endl;
}

D. Mathematical Problem

题意:找出n个n位数(n为奇数),每个数满足各数位的组成的集合相同,且每个数都是一个平方数;

思路:

map打表找规律,会发现神奇的事情:

n = 3
169
196
961
n = 5
10609
16900
19600
61009
90601
96100
n = 7
1006009
1060900
1690000
1960000
6100900
9006001
9060100
9610000
n = 9
100060009
100600900
106090000
169000000
196000000
610090000
900060001
900600100
906010000
961000000
......

然后就是字符串的操作了…

AC code:

void solve() {string cnt = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";cin >> n;if (n == 1) {cout << 1 << endl;return;}cout << "196" << cnt.substr(0, max((LL)0, n - 3)) << endl;for (int i = 0; i < n / 2; i ++) {cout << '1' << cnt.substr(0, i) << '6' << cnt.substr(0, i) << '9' << cnt.substr(0, max((LL)0, n - 3 - 2 * i)) << endl;cout << '9' << cnt.substr(0, i) << '6' << cnt.substr(0, i) << '1' << cnt.substr(0, max((LL)0, n - 3 - 2 * i)) << endl;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络Ping不通故障定位思路

故障分析 Ping不通是指Ping报文在网络中传输&#xff0c;由于各种原因&#xff08;如链路故障、ARP学习失败等&#xff09;而接收不到所有Ping应答报文的现象。 如图1-1所示&#xff0c;以一个Ping不通的尝试示例&#xff0c;介绍Ping不通故障的定位思路。 图1-1 Ping不通故…

9. 进程

9. 进程 1. 进程与程序1.1 main() 函数由谁调用1.2 程序如何结束1.2.1 注册进程终止处理函数 atexit() 1.3 何为进程1.4 进程号 2. 进程的环境变量2.1 应用程序中获取环境变量2.1.1 获取指定环境变量 2.2 添加/删除/修改环境变量2.2.1 putenv()2.2.2 setenv()2.2.3 命令行式添加…

【Spring Security】认证之案例的使用、MD5加密、CSRF防御

目录 一、引言 1、什么是SpringSecurity认证 2、为什么使用SpringSecurity之认证 3、实现步骤 二、快速实现&#xff08;案例&#xff09; 1、添加依赖 2、配置 3、导入数据表及相关代码 4、创建登录页及首页 5、创建配置Controller 6、用户认证 6.1、用户对象User…

Linux磁盘与文件管理

目录 一、磁盘介绍 1. 磁盘数据结构 2. 磁盘的接口类型 3. 磁盘在Linux上的表现形式 二、磁盘分区与MBR 1. 分区优缺点 2. 分区方式 3. MBR分区 4. GPT分区 三、文件系统 1. 文件系统的组成 2. 默认的文件系统 3. 文件系统的作用 4. 模拟破坏文件与修复文件 4…

喜迎元旦 | 愿新年,胜旧年,百华鞋业祝您元旦快乐,万事胜意!

一年复始岁序开&#xff0c;万象更新启新华 2023年我们聚力同行&#xff0c;相融共生&#xff0c; 凝心携手&#xff0c;奋进前行。 2024年我们挟着未知&#xff0c;带着期待&#xff0c; 继续携手砥砺前行 踏上新征程&#xff0c;向着新的奋斗目标再出发。 元旦&#xff…

四种常见智能指针的介绍

一、介绍 当类中有指针成员时&#xff0c;一般有两种方式来管理指针成员&#xff1a;一是采用值型的方式管理&#xff0c;每个类对象都保留一份指针指向的对象的拷贝&#xff1b;另一种更优雅的方式是使用智能指针(smart pointer)&#xff0c;从而实现指针指向的对象的共享。 …

蓝桥杯C/C++程序设计——特别数的和

题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 0&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 n 中&#xff0c;所有这样的数的…

GitHub 一周热点汇总 第3期 (2023/12/24-12/30)

GitHub一周热点汇总第三期 (2023/12/24-12/30)&#xff0c;梳理每周热门的GitHub项目&#xff0c;了解热点技术趋势&#xff0c;掌握前沿科技方向&#xff0c;发掘更多商机。元旦就要到了&#xff0c;提前祝大家新年快乐。 #1 StreamDiffusion 项目名称&#xff1a;StreamDiff…

vue项目表单使用正则过滤ip、手机号

import useFormValidate from /hooks/useFormValidatesetup(props, { emit }) {const { validateName, validateIPAndPort } useFormValidate()const state reactive({workFaceInfo: props.info?.id ? props.info : {},sysTypeData: props.sysType,formRules: {name: [{req…

wsl中的Ubuntu安装远程桌面

wsl Ubuntu默认只能打开命令行&#xff0c;看不到图形化界面&#xff0c;有些操作不方便。这里介绍两种方法来远程连接到wsl里 VNC 因为win10的wsl不支持systemd&#xff0c; 所以这种方式只能是Windows11的系统&#xff0c;Window10只能用xrdp 1、禁用WSLg 在c:\users\用户…

12.31_黑马数据结构与算法笔记Java

目录 345 设计跳表 Leetcode 1206 346 设计最小栈 Leetcode 155 347 设计端网址 Leetcode 355 348 设计推特 Leetcode 355 349 股票系列问题 Leetcode 121 350 股票系列问题 Leetcode 122 351 股票系列问题 Leetcode 714 352 股票系列问题 Leetcode 309 353 股票系列问…

【Redis-10】Redis集群的实现原理和实践

Redis集群是Redis提供的分布式数据库方案&#xff0c;通过分片来进行数据共享&#xff0c;实现复制和故障转移的功能。 1. Redis集群节点 一个Redis集群由多个节点组成&#xff0c;多个节点可以通过命令实现连接&#xff0c;由独立状态转为集群状态&#xff0c;命令是cluster …