来自AI助手的总结
题目要求计算一系列连续整数的n次幂之和是否等于给定值,若存在则输出该序列,否则输出特定字符串。
L1-111 大幂数
输入样例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 现代战争
输入样例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
解析:
- 先初始化地图,在地图上每个点都进行标记,此值不是题目范围内的任何值;
- 输入的时候,我们将每个值以及值的坐标存储到数组中,存储好之后再排序;
- 接着模拟轰炸,将每次循环取数组的最大值,将最大值所在的整行整列进行标记,对应的位置标记为特殊值,已经轰炸过的位置的值存储进一个哈希表内,表示已经轰炸过了;
- 在下次循环的时候,取数组最大值的时候,查询哈希表中的值看是否已经轰炸过;
- 轰炸完后将未被标记过的位置值输出即可。
代码:
© 版权声明
THE END
暂无评论内容