第十届团体程序设计天梯赛-题解(20分-C/C++)

第十届团体程序设计天梯赛-题解(20分-C/C++)

来自AI助手的总结
题目要求计算一系列连续整数的n次幂之和是否等于给定值,若存在则输出该序列,否则输出特定字符串。

L1-111 大幂数

20250525160914715-image

输入样例1:

91

输出样例1:

1^2+2^2+3^2+4^2+5^2+6^2

输入样例2:

2147483647

输出样例2:

Impossible for 2147483647.

解析:

  • 从题目可以看出,对于题目的最大值,有1^31 + 2^31就大于输入最大值了。所以幂的最大值取32即可;
  • 接着我们从题目可以看到,需要找到一个为m的值,然后求出1^n + ... + m^n = 目标值
  • 接着通过循环来求1^n + ... + m^n,如果此值大于目标值,就跳出循环,再判断和是否等于目标值。
  • 如果在n的值归零时还没有找到目标的m值,就输出题目给出的字符串,否则按照题目输出格式即可

代码:

L1-112 现代战争

20250525163100283-image

20250525163119257-image

输入样例1:

4 5 2
3 8 6 1 10
28 9 21 37 5
4 11 7 25 18
15 23 2 17 14

输出样例1:

3 6 10
4 7 18

解析:

  • 先初始化地图,在地图上每个点都进行标记,此值不是题目范围内的任何值;
  • 输入的时候,我们将每个值以及值的坐标存储到数组中,存储好之后再排序;
  • 接着模拟轰炸,将每次循环取数组的最大值,将最大值所在的整行整列进行标记,对应的位置标记为特殊值,已经轰炸过的位置的值存储进一个哈希表内,表示已经轰炸过了;
  • 在下次循环的时候,取数组最大值的时候,查询哈希表中的值看是否已经轰炸过;
  • 轰炸完后将未被标记过的位置值输出即可。

代码:

温馨提示:本文最后更新于2025-05-25 17:18:47,某些文章具有时效性,若有错误或已失效,请在下方留言或联系 站长
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容