📌  相关文章
📜  i的总和,使得(2 ^ i + 1)%3 = 0,其中i在[1,n]范围内(1)

📅  最后修改于: 2023-12-03 15:01:27.654000             🧑  作者: Mango

求以i的总和,使得(2 ^ i + 1)%3 = 0,其中i在[1,n]范围内

问题描述

给定一个正整数n,求1到n之间所有满足(2 ^ i + 1)%3 = 0的i的总和。

解决方案

对于这个问题,可以使用循环遍历,计算满足条件的i值之和。具体解决方案如下:

def calculate_i_sum(n: int) -> int:
    i_sum = 0     # i的总和
    for i in range(1, n + 1):
        if (2 ** i + 1) % 3 == 0:
            i_sum += i
    return i_sum

我们可以先定义一个变量i_sum,用于计算i的总和,然后使用for循环遍历1到n之间的所有整数。当2的i次方加1除以3的余数是0时,说明i满足条件,我们就需要将i的值加到i_sum中。最后返回i_sum即可。

时间复杂度与空间复杂度

针对此算法,时间复杂度为$O(n)$,空间复杂度为$O(1)$。

测试结果

我们可以对代码进行简单的测试。

>>> calculate_i_sum(10)
7
>>> calculate_i_sum(20)
22
>>> calculate_i_sum(100)
505
总结

本题是一道很简单的模拟题目,主要考察对循环遍历的掌握。需要注意的是,因为$i>=1$,所以必须把起始值设置为1。