每日一练算法

问题描述

小蓝有一个整数 n。每分钟,小蓝的数都会发生变化,变为上

一分钟的数减去上一分钟的数的各个数位和。
例如,如果小蓝开始时的数为 23,则下一分钟变为
23-(2+3)= 18,再下一分钟变为 18-(1+8)=9,再
下一分钟变为 9-9 = 0,共经过了3分钟变为 0。
给定一个正整数,请问这个数多少分钟后变为 0。
输入格式
输入一行包含一个整数 n。
输出格式
输出一个整数,表示答案。题目来自南桥云

代码

复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 输入一个整数n
        int minutes = findMinutesToZero(n); // 计算将n减少到0需要的最小分钟数
        System.out.println(minutes); // 输出结果
        scanner.close(); // 关闭扫描器
    }

    private static int findMinutesToZero(int n) {
        int minutes = 0; // 初始化最小分钟数为0
        while (n > 0) {
            int sumOfDigits = calculateSumOfDigits(n); // 计算数字n的各位数字之和
            n -= sumOfDigits; // 将n减少sumOfDigits
            minutes++; // 增加最小分钟数
        }
        return minutes; // 返回将n减少到0需要的最小分钟数
    }

    private static int calculateSumOfDigits(int num) {
        int sum = 0; // 初始化各位数字之和为0
        while (num > 0) {
            sum += num % 10; // 累加num的最后一位数字
            num /= 10; // 移除num的最后一位数字
        }
        return sum; // 返回num的各位数字之和
    }
}

在这段代码中,有两个主要的方法:

  1. main方法:它创建了一个Scanner对象来获取用户输入的整数,调用findMinutesToZero方法来计算所需的最小分钟数,并输出结果。
  2. findMinutesToZero方法:此方法通过循环不断计算当前数字的各位数字之和,并从当前数字中减去这个和,同时计数器minutes递增,直到数字降至0。
  3. calculateSumOfDigits方法:这是一个辅助方法,用于计算一个整数的各位数字之和。

请注意,这段代码假设用户输入的始终是一个正整数,并没有包含错误处理或非预期输入的情况。在实际应用中,可能需要添加适当的错误处理机制来确保程序的健壮性。

相关推荐
人间凡尔赛7 小时前
Next.js 16 生产级实战:Cache Components + View Transitions 完整指南
开发语言·javascript·ecmascript
架构源启7 小时前
文档接入与智能解析:基于 Spring AI 1.1.x 的多格式解析、版面理解与结构化抽取
java·人工智能·spring
可编程芯片开发9 小时前
基于MATLAB的PEF湍流风场生成器模拟与仿真
算法
罗西的思考9 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (9)--- Reward Judging
人工智能·算法·机器学习
稚南城才子,乌衣巷风流10 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波11 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
Mr.HeBoYan11 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
大模型码小白11 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
wabs66611 小时前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
名字还没想好☜12 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器