15-4连续子串和的整除问题

问题描述

小M是一个五年级的小学生,今天他学习了整除的知识,想通过一些练习来巩固自己的理解。他写下了一个长度为 n 的正整数序列 a_0, a_1, ..., a_{n-1},然后想知道有多少个连续子序列的和能够被一个给定的正整数 b 整除。你能帮小M解决这个问题吗?


测试样例

样例1:

输入:n = 3,b = 3,sequence = [1, 2, 3]

输出:3

样例2:

输入:n = 4,b = 5,sequence = [5, 10, 15, 20]

输出:10

样例3:

输入:n = 5,b = 2,sequence = [1, 2, 3, 4, 5]

输出:6

python 复制代码
def solution(n, b, sequence):
    count = 0  # 用于记录符合条件的子序列数量
    
    # 外层循环,确定子序列的起始位置
    for start in range(n):
        current_sum = 0  # 当前子序列的和
        
        # 内层循环,确定子序列的结束位置
        for end in range(start, n):
            current_sum += sequence[end]  # 更新当前子序列的和
            
            # 检查当前和是否能被 b 整除
            if current_sum % b == 0:
                count += 1  # 如果可以整除,则计数加一
                
    return count  # 返回符合条件的子序列数量

if __name__ == "__main__":
    # 测试样例
    sequence1 = [1, 2, 3]
    print(solution(3, 3, sequence1) == 3)  # 输出: True

    sequence2 = [5, 10, 15, 20]
    print(solution(4, 5, sequence2) == 10)  # 输出: True

    sequence3 = [1, 2, 3, 4, 5]
    print(solution(5, 2, sequence3) == 6)  # 输出: True

    # 其他测试用例
    sequence4 = [1, 1, 1, 1]
    print(solution(4, 2, sequence4) == 10)  # 输出: True (所有子序列的和都是 1 或 2 的倍数)
相关推荐
liuyao_xianhui3 分钟前
优选算法_岛屿的最大面积_floodfill算法_C++
java·开发语言·数据结构·c++·算法·leetcode·链表
清水白石0083 分钟前
《Python 静态检查链:格式化、Lint、类型检查、安全扫描全攻略——CI 阻断策略与团队平衡实践》
python·安全·ci/cd
赵域Phoenix7 分钟前
Origin导入xlsx数据解锁编辑
算法
寻寻觅觅☆9 分钟前
东华OJ-基础题-33-数字之和(C++)
数据结构·c++·算法
soragui24 分钟前
【Python】第 2 章:Python 对象模型
开发语言·python
算AI35 分钟前
重绘多孔世界的蓝图:GAN助力多孔材料的数字重构
人工智能·深度学习·算法·机器学习·生成对抗网络·ai
高洁0138 分钟前
大模型Prompt实战:精准生成专业技术文档
人工智能·python·数据挖掘·transformer·知识图谱
ZPC821039 分钟前
手柄替代键盘
人工智能·算法·性能优化·机器人
努力学习的小廉42 分钟前
Python 零基础入门——基础语法(一)
java·网络·python
源码之家1 小时前
计算机毕业设计:Python二手车数据分析推荐系统 Flask框架 requests爬虫 协同过滤推荐算法 可视化 汽车之家 机器学习(建议收藏)✅
大数据·python·机器学习·数据分析·flask·汽车·课程设计