Python 算法题:简单加法算式统计

问题描述

首先给出简单加法算式的定义:

如果有一个算式'(i) + (i + 1) + (i + 2)' (i >= 0),在计算的过程中,没有任何一个数位出现了进位,则称其为简单的加法算式。

例如:i = 3 时,3 + 4 + 5 = 12,有一个进位,因此 3 + 4 + 5 不是一个简单的加法算式;又如 i = 112 时,112 + 113 + 114 = 339,没有在任意数位上产生进位,故 112 + 113 + 114 是一个简单的加法算式。

**问题:**给定一个正整数 n,问当 i 大于等于 0 且小于 n 时, 有多少个算式 '(i) + (i + 1) + (i + 2)' 是简单加法算式。其中 n < 10000。

输入格式

一个整数,表示 n

输出格式

一个整数, 表示简单加法算式的个数

解题思路:

  1. 枚举 i,判断 '(i) + (i + 1) + (i + 2)' 是否为简单加法算式。
  2. 判断方法:从低位到高位逐位相加,若出现进位则不符合要求,否则符合要求。
  3. 注意边界情况,当 i + 2 的最高位有进位时需要特别处理。

参考代码:

def is_simple_addition(i):
    '''
    判断 (i) + (i + 1) + (i + 2) 是否为简单加法算式
    '''
    sum_str = str(i + i + 1 + i + 2)
    carry = 0
    for digit in sum_str[::-1]:
        digit = int(digit)
        if digit + carry >= 10:
            return False
        carry = (digit + carry) // 10
    return True

def count_simple_additions(n):
    '''
    统计 i 从 0 到 n - 1 之间,简单加法算式的个数
    '''
    count = 0
    for i in range(n):
        if is_simple_addition(i):
            count += 1
    return count

n = int(input())
print(count_simple_additions(n))
Python 算法题:简单加法算式统计

原文地址: https://www.cveoy.top/t/topic/nZEj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录