GESP编程共123题,本题是整站第1386题,已经有人完成了本题,加油!
小杨认为,所有大于等于 a 的完全平方数都是他的超级幸运数。
小杨还认为,所有超级幸运数的倍数都是他的幸运数。自然地,小杨的所有超级幸运数也都是幸运数。
对于一个非幸运数,小杨规定,可以将它一直 +1,直到它变成一个幸运数。我们把这个过程叫做幸运化。例如,如果a=4,那么 4 是最小的幸运数,而 1 不是,但我们可以连续对 1 做 3 次 +1 操作,使其变为 4,所以我们可以说, 1幸运化后的结果是 4。
现在,小杨给出 N 个数,请你首先判断它们是不是幸运数;接着,对于非幸运数,请你将它们幸运化。
第一行 2 个正整数 a,N。
接下来 N 行,每行一个正整数 x ,表示需要判断(幸运化)的数。
输出 N 行,对于每个给定的 x ,如果它是幸运数,请输出 lucky
,否则请输出将其幸运化后的结果。
输入 #1
2 4 1 4 5 9
输出 #1
4 lucky 8 lucky
输入 #2
16 11 1 2 4 8 16 32 64 128 256 512 1024
输出 #2
16 16 16 16 lucky lucky lucky lucky lucky lucky lucky
样例解释 1
虽然是完全平方数,但它小于 a,因此它并不是超级幸运数,也不是幸运数。将其进行 3 次 +1 操作后,最终得到幸运数 4。4是幸运数,因此直接输出 lucky
。
5 不是幸运数,将其进行 3 次 +1 操作后,最终得到幸运数 8。
9 是幸运数,因此直接输出 lucky
。
数据规模
对于 30% 的测试点,保证 a,x≤100,N≤100。
对于 60% 的测试点,保证 a,x≤10^6。
对于所有测试点,保证 a≤1,000,000;保证 N≤2×10^5;保证 1≤x≤1,000,001。
【题目大意】给一个完全平方数的标准,推导出哪些是超级幸运数,然后判断N个数字中,哪些是超级幸运数,是的输出“lucky",不是的输出离该数字最近的比它大的数字
【考纲知识点】数学知识,埃筛知识,循环知识
【解题思路】完全平方数按照定义,包括1,4,9,16,25..…。超级幸运数还可以是完全平方数的倍数,因此8,12,18..…也是超级幸运数。数据范围比较大,1e6,用埃筛的模板,判断每一个数字是否是幸运数字。不是幸运数字的话,保留离它最近的幸运数字作为答案。最终完成整个查询。
【参考程序】
本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。