📌  相关文章
📜  教资会网络 | UGC NET CS 2017 年 1 月至 2 日 |问题 13(1)

📅  最后修改于: 2023-12-03 14:54:50.511000             🧑  作者: Mango

教资会网络 | UGC NET CS 2017 年 1 月至 2 日 |问题 13
简介

教资会网络 (UGC NET) 是由印度国家资格测试局 (National Testing Agency,NTA) 组织的全国级考试,旨在选拔和资格认证具有潜力和合格的印度教育界人才。UGC NET CS 2017 年 1 月至 2 日的第 13 题是考试中的一道编程问题。

题目描述

给定一个正整数 n,编写一个函数来计算小于等于 n 的非零数字的总和。函数签名如下:

def compute_sum(n: int) -> int:
输入
  • 一个正整数 n,表示计算数字和的范围。
输出
  • 返回小于等于 n 的所有非零数字的总和。
示例

输入:

compute_sum(15)

输出:

45
解题思路

要解决这个问题,我们可以将数字 n 拆分成个位、十位、百位等等。然后,我们将这些非零数字相加,即可得到总和。

以 15 为例,拆分数字:

1 * 10^1 + 5 * 10^0 = 10 + 5 = 15

拆分后的个位、十位数字都是非零数,所以总和为 1 + 5 = 6。

代码实现
def compute_sum(n: int) -> int:
    # 初始化总和为 0
    total_sum = 0
    
    # 从个位数开始拆分数字
    while n > 0:
        # 获取个位数
        digit = n % 10
        
        # 将非零数字相加
        if digit != 0:
            total_sum += digit
            
        # 去掉个位数
        n = n // 10
    
    # 返回总和
    return total_sum
使用示例
sum = compute_sum(15)
print(sum)  # 输出 6

请注意,以上的代码片段是使用 Markdown 标记的。