思路
数字可以分为
有诗意的数字可以写成 (i+j)(j-i+1)/2 ( i、j都是正整数 )
i+j 、j-i+1 的奇偶性不同(因为i、j都是正整数)
因此,
如果一个数是奇数就一定有诗意
eg.3=1+2 ,5=2+3,7=3+4,9=4+5…
原因:根据上述分析得出有诗意的数字一定是 奇数 * 偶数 /2 。一个奇数=该奇数 *2 /2.
eg 3=3 * 2/2
是奇数 * 2的次方的偶数一定有诗意
eg 10=1+2+3+4
原因:根据上述分析得出有诗意的数字一定是 奇数 * 偶数 /2 。奇数 * 偶数=该奇数 * 该偶数 *2 /2.
eg 10=5 * 2 * 2 / 2,2、5的奇偶性不同
所有2的幂次方都没有诗意(1也没有诗意,题目要求至少两个连续的数)。
1、打表验证1~100中没有诗意的数字是2的次方
2、判断一个数是不是2的次方数
法一:math.log2(n).is_integer() 简单粗暴
法二:奇数一定不是2的次幂。但是偶数也不一定是2的次方,如果这个偶数的最小因数全是2则是2的次方,如果最小因数含有奇数则不是。
3、题目代码实现
方法一:
方法二:
4、python中map的用法
在Python中,map()是一个内置函数,它接收一个函数和一个或多个可迭代对象(如列表、元组等),然后将该函数应用于可迭代对象的每一个元素,并返回一个新的迭代器。(非列表,要获得列表要再转一下)
下面是map()函数的基本用法和几个示例:
map(function, iterable, …)
function:一个应用于每个可迭代对象的元素的函数。
iterable:一个或多个可迭代对象。
示例1:基本使用
示例2:应用于多个可迭代对象
map()函数也可以同时处理多个可迭代对象。例如,如果我们有两个列表,并想要将它们中的对应元素相加:
示例3:使用内置函数
我们也可以使用内置函数作为map()的第一个参数。例如,如果我们想要将列表中的每个字符串都转换为大写: