湘南学院第一届程序设计大赛题解(XNPC—2022)
题解目录
A、你的马蹄铁是在另一只蹄子上吗?
题目大意:
题解:
代码:
B、判断奇因子
题目大意:
题解:
代码:
C、死亡祝福
题目大意:
题解:
代码:
D、奇怪的方程式
题目大意:
题解:
代码:
E、隐藏多余线
题目大意:
题解:
代码:
F、电量计算——大型LED屏
原题大意:
题解:
代码:
G、乐于助人的会长
题目大意:
题解:
代码:
H、矩阵字符串
题目大意:
题解:
代码:
I、拯救杂志
题目大意:
题解:
代码:
J、阶乘的可分性
题目大意:
题解:
代码:
K、寻找配对
题目大意:
注意:
解一(C语言版):
C语言代码:
解二(C++版):
C++代码:
L、七对子
题目大意:
题解:
代码:
C++代码:
结语:
A、你的马蹄铁是在另一只蹄子上吗?
题目大意:
给定四个数字(不一定不同),请你求 若要拥有四个不同的数字,还需要加入几个数字?(原题链接)
题解:
这题的做法很多,你可以开一个很大的数组a 初始数组中的数全为0,然后出现一个数字i就令a[i] = 1;然后在再次遇到这个数字就令答案ans + 1,然后输出答案即可(可惜每个每个数字的范围都是1~1000000000的,开一个1e9的数组肯定会爆,所以还是不行)
开个玩笑,进入正题:1.可以一直用if判断(只是代码量比较大,而且容易把自己绕晕)。2.首先将四个数存到一个数组里面,可以先用一个自己擅长的排序将数组中的数排好序,然后从左至右遍历一边,相同的数字肯定是相邻的,所以当a[i] = a[i + 1]时,答案ans就 + 1;
3.其实也可以用两重循环将数组中的每个数与除了自己以外每个数做比较,遇到相同的数就令让这个数变为0,这样的话就可以避免排序,最后在看数组中有几个0,答案就是几(当然,会C++的同学也可以用C++中一些比较好用的函数,会更加简单)最后贴上代码:
代码:
#include <stdio.h>int main()
{int a[4], ans = 0;;for (int i = 0; i < 4; i ++) scanf("%d", &a[i]);for (int i = 0; i < 4; i ++)for (int j = 0; j < 4; j ++){if(i == j) continue;if (a[i] == a[j]) a[j] = 0;}for (int i = 0; i < 4; i ++)if (a[i] == 0) ans ++;printf("%d", ans);return 0;
}
B、判断奇因子
题目大意:
给你一个数n让你判断n是否存在一个大于1的基数因子。存在就输出YES,否则输出NO(原题链接)
题解:
首先这题n的范围是2~10^14的,所以暴力肯定过不了,但是我们可以肯定的是当n是一个奇数,可以被自己整除,所以一定是YES的。那现在我们来看下面集中情况:
奇数 x 奇数 = 奇数
偶数 x 奇数 = 偶数
偶数 x 偶数 = 偶数
所以当n是偶数时 也可能存在奇数因子的,所以我们只知道当一个偶数除以一个偶数存在一个大于1的奇数的时候,也是YES的。我们再来看看偶数的定义,一个能被2整除的数,是偶数。所以当n可以被2整除时,我们就除2,重复操作到n不能被整除的时候,若n > 1则为YES,否则为NO。(注意n很大,所以要用long long)
代码:
#include <stdio.h>int main(void)
{int t = 1; scanf ("%d", &t);while (t --){long long n; scanf("%lld", &n);while (n % 2 == 0) n /= 2;if(n > 1) printf ("YES\n");else printf ("NO\n");} return 0;
}
C、死亡祝福
题目大意:
在你面前有n只怪物,第i个的血量为ai,同时也有bi的魔法值,当你杀死第i只怪物的时候,它会释放魔法值,令自己的邻居第i - 1和i + 1怪物的血量加bi,第一只和最后一只怪物的邻居只有一个,每杀死一个怪物,后面的怪物都会补上来形成一个新的排序。杀死血量为h的怪物需要耗时h秒,问你最快多少秒能杀死所有怪物。(原题链接)
题解:
我们可以知道,要通关就必须杀死所有的怪物,所以对于每个怪物的血量我们是必须要加上的,我们需要做的就是如何让每个怪物的释放的魔法值最小呢,显然魔法值最大的我们肯定是要留到最后面,这样它就不会给自己的邻居加血了。
又看题目可以知道,第一只和最后一只怪物只有邻居,相比于其他怪物题目所释放的魔法值只有bi,而其他怪物是2*bi,所以我们其实只需要从让讲魔法值最大的怪物留到最后,然后从最左边或者从最右边开始杀,直到只剩下魔法值最大的怪物,并杀死他,这样它的魔法值就会作废且这样的方案肯定是最优的。(注意答案需要用long long类型,因为ai和bi最大是10^9,n最大可以是200000)
代码:
#include <stdio.h>int main(void)
{int t = 1; scanf ("%d", &t);while (t --){int n; scanf("%d", &n);long long ans = 0, maxv = -1;for (int i = 1; i <= n; i ++) {int xx; scanf("%d", &xx);ans += xx; // 将怪物的血量全部加上,这是不可避免的}for (int i = 1; i <= n; i ++) {int xx; scanf ("%d", &xx);if(xx > maxv) maxv = xx;ans += xx; // 先将所有的魔法值加上,到最后输出的时候减去最大的即可} printf ("%lld\n", ans - maxv);} return 0;
}
D、奇怪的方程式
题目大意:
给定a, b, c求满足公式 的个数以x(0 < x < 10^9),其中s(x)是x的所有位数的和,例如s(123) = 1 + 2 + 3 = 6。(原题链接)
题解:
因为数据范围很大(0 < x < 10^9),所以这题暴力肯定过不了,但是我们可以看最极限的情况:[1, 999999999],所以在这个区间内s(x)的范围是[1, 81],那我们就反向求。
设i为s(x),所以我们就循环81次,算出 ;设为xx,再判断s(xx) == i,若成立则xx为我们所求的解。(注意x的范围是(0, 0^9),当xx超出这个范围,则不满足条件)
代码:
#include <stdio.h>
#define inf 1e9 // 先定义好边界值int ans[10000000], a, b, c;void solve()
{int pos = 0; scanf ("%d%d%d", &a, &b, &c);for (int i = 1; i <= 81; i ++) {long long xx = i;for (int j = 1; j < a; j ++) xx = xx * i; // 求s(x)的a次方xx = xx * b + c;if (xx >= inf || xx < 1) continue; // 算出来的答案超过x的范围了就舍弃long long res = xx, st = 0;while (res) {st += (res % 10);res /= 10;} if(st == i) ans[++ pos] = xx;}if (pos == 0) { printf("0\n"); return ; }printf("%d\n", pos);for (int i = 1; i <= pos; i ++) printf("%d " ,ans[i]);printf("\n");return ;
}int main(void)
{int t = 1; scanf ("%d", &t);while (t --)solve();return 0;
}
E、隐藏多余线
题目大意:
你讲得到n个三元组,(Li, Hi, Ri)其中 Li 和 Ri 分别是建筑物 i 的左右边缘坐标,Hi 是建筑物 i 的高度。三元组可能会重叠,你要做的就是消除坐标系中的所有矩形图多余的部分,使其变成一个整体的图形,然后以坐标的形式输出。不太好简单描述,大家还看看原题吧
湘南学院第一届程序设计大赛题解(XNPC—2022)相关推荐
- 中南林科大软件协会第一届程序设计大赛作品报告
软件协会第一届程序设计大赛 作品名称: 中南林业科技大学人员出入校管理系统 作 者: *** 填写日期: 2022.05.26 目 录 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 ...
- 中学生python程序设计大赛_贵州民族大学第一届程序设计大赛圆满举办
原标题:贵州民族大学第一届程序设计大赛圆满举办 为了推动和促进计算机程序设计艺术在校园内的推广与普及,提高同学们的逻辑分析能力.学习编程的兴趣.学生的创造力.团队合作精神以及实际动手能力,特举办贵州民 ...
- 【桂林信息科技学院第一届程序设计大赛】完整题解 C++
目录 A.Hello 小明 B.博学多识的小明 C.小明爱偶数 D.小明爱打单词 E.小明打篮球 F.小明爱数学 G.小明与张三 H.小明拿宝藏 I.小明的考试成绩 J.小明与鲜花 K.小明与小红的增 ...
- QDU第一届程序设计大赛——E到I题解法(非官方题解)
题目链接https://qduoj.com/contest/28/problems,密码:qdu1230 E题: 思路:先进行排序,然后去暴力模拟就可以,但可能WA了几次,导致此题没解出来,有点可惜 ...
- NUIST第一届程序设计大赛团队赛题解
本次比赛,AK两题为签到题, 文章目录 A. 负鼠的追求者 解法1 解法2 B. Game 解法1 解法2 C. 犯困的负鼠 D. 天天爱跑步 E. 愉快的负鼠 F. Relative Molecul ...
- SWPUACM第一届程序设计大赛
文章目录 A 简单的字符串处理 B 多米诺骨牌 C 翻转棋 D 多次方程求解 E 约瑟夫升级 F 字符画打印,很简单哒 G 黄金矿工 H 天之杯 A 简单的字符串处理 TimeLimit: 1000m ...
- 第一届程序设计竞赛题解(E题)
E.码头菩萨 题目描述: 众所周知,陈末是个英雄联盟菜鸟,又菜又爱玩. 陈末特别喜欢用派克来秀他下饭的操作,每次都能把自己秀死. 涌泉之恨是派克的大招,能在一定情况下,直接斩杀敌人. 此时陈末操作的派 ...
- 江苏大学2021年第一届程序设计大赛(UJSCPC)题面
目录 A. 校门外的树 问题描述 输入形式 输出形式 样例输入 样例输出 B. 合格的素数 问题描述 输入形式 输出形式 样例输入 样例输出 C. 高精度乘法 问题描述 输入形式 输出形式 样例输入 ...
- NUIST第一届程序设计大赛团队赛试题
A. 负鼠的追求者 题目描述 负鼠有一个讨厌的追求者,一直紧跟在她后面. 已知负鼠在位置x,它的追求者在位置p,其中1 ≤ p ≤ x.由于负鼠很讨厌这个追求者,所以只有他们所处位置互质的时候,负鼠才 ...
最新文章
- 分布式系统的Raft算法——在失联阶段这个老Leader的任何更新都不能算commit,都回滚,接受新的Leader的新的更新 意味着还是可能丢数据!!!...
- Python operator.not_()函数与示例
- 【Flink】Flink 多并行度下的 watermark触发机制
- 自己创建一个本地服务器,实现文件下载
- 读取jar中资源文件的问题
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)...
- 谷歌地图高精度模型提取3
- messagedigest 图片加密_通过MessageDigest实现简单的MD5加密
- vscode文件管理只有文件夹的时候也层级显示
- Mysql数据库内的索引操作【重点】
- 日志级别的选择:Debug、Info、Warn、Error还是Fatal
- css中relative、absolute和float
- 6.2 不一致数据的转换
- 针对直播痛点的关键技术解析——首帧秒开、清晰度、流畅度
- chrome 收藏夹链接
- SQL——JDBC练习题
- 三次创业失败,现在好好工作,为下次崛起再努力。没什么好怕的,哈哈,活了半辈子,总结一句:要么忙着生,要忙着死。
- 2016OSC源创会年终盛典-架构与数据专场-郝林
- Solv Vouchers 全新版本 V2.1 发布!
- PickerView(二级联动)
热门文章
- C:\wamp64\bin\mysql\mysql5.7.23\bin 远程连接
- (小笔记)(sql)(NVL、Round)导入新课程
- h5调用手机相机和录音机_奥林巴斯退出数码相机业务。打败你的不是同行,而是跨界!...
- [网鼎杯 2022] crypto582 重作
- 学校校园学生信息管理系统 毕业设计毕业源码毕业论文开题报告参考(3)上课老师功能
- 【Unity】物理碰撞实验
- 半导体中本征载流子的浓度推导
- python 2到100的素数_po视频app下载安装|西瓜视频app下载安装_电脑知识学习网
- 回溯法求解K图染色问题(java版)
- 推荐软件:Quset PowerGUI