OJ3376无尽的石头问题

答案:

#include<bits/stdc++.h>
using namespace std;
const int N=10e7;
int fx(int n)
{
  int sum=0;
  while(n)
  {
    sum+=(n%10);
    n/=10;
  }
  return sum;
}
int main()
{
  int t,n,x;
  cin>>t;
  while(t--)
  {
    cin>>n;
    int count=0;
    for(int i=1;i<N;){
    if(i==n){
    cout<<count<<'\n';
    break;
    }
    else if(i>n){
    cout<<-1<<'\n';
    break;
  }
  x=fx(i);
  i=(i+x);
  count++;
  }
}
  return 0;
}

代码的逻辑:

  • 函数 fx 计算一个整数 n 的各位数字之和。
  • 主函数中首先读取测试案例数量 t,然后对于每个测试案例,读取目标值 n
  • 代码使用一个 for 循环从 i = 1 开始,逐步计算下一个值 i,直到 i 等于或大于 n

假设 n = 5,代码的执行过程如下:

  1. t = 1(一个测试案例)
  2. n = 5(目标值)
  3. 初始化 count = 0i = 1

进入 for 循环:

  • 第一轮循环

    • i = 1
    • 计算 x = fx(1) = 1
    • 更新 i = i + x = 1 + 1 = 2
    • count++count = 1
  • 第二轮循环

    • i = 2
    • 计算 x = fx(2) = 2
    • 更新 i = i + x = 2 + 2 = 4
    • count++count = 2
  • 第三轮循环

    • i = 4
    • 计算 x = fx(4) = 4
    • 更新 i = i + x = 4 + 4 = 8
    • count++count = 3
  • 第四轮循环

    • i = 8
    • 这时 i > n,所以输出 -1,并退出循环。

因此,对于 n = 5,程序将输出 -1

我们再通过另一个例子 n = 10 来分析:

  1. t = 1(一个测试案例)
  2. n = 10(目标值)
  3. 初始化 count = 0i = 1

进入 for 循环:

  • 第一轮循环

    • i = 1
    • 计算 x = fx(1) = 1
    • 更新 i = i + x = 1 + 1 = 2
    • count++count = 1
  • 第二轮循环

    • i = 2
    • 计算 x = fx(2) = 2
    • 更新 i = i + x = 2 + 2 = 4
    • count++count = 2
  • 第三轮循环

    • i = 4
    • 计算 x = fx(4) = 4
    • 更新 i = i + x = 4 + 4 = 8
    • count++count = 3
  • 第四轮循环

    • i = 8
    • 计算 x = fx(8) = 8
    • 更新 i = i + x = 8 + 8 = 16
    • count++count = 4
  • 第五轮循环

    • i = 16
    • 这时 i > n,所以输出 -1,并退出循环。

对于 n = 10,程序同样输出 -1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网关(Gateway)- 自定义过滤器工厂

自定义过滤工厂类 DemoGatewayFilterFactory package com.learning.springcloud.custom;import org.apache.commons.lang.StringUtils; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChai…

FreeRTOS【16】直达任务通知使用

1.开发背景 直达任务通知&#xff0c;FreeRTOS 的线程任务提供的接口&#xff0c;可以用作线程唤醒&#xff0c;或者是传递数据&#xff0c;因为是基于线程本身的操作&#xff0c;是轻量级&#xff0c;速度响应更快&#xff0c;适合小内存芯片使用。 事实上本人使用得比较少&am…

pytorch笔记:自动混合精度(AMP)

1 理论部分 1.1 FP16 VS FP32 FP32具有八个指数位和23个小数位&#xff0c;而FP16具有五个指数位和十个小数位Tensor内核支持混合精度数学&#xff0c;即输入为半精度&#xff08;FP16&#xff09;&#xff0c;输出为全精度&#xff08;FP32&#xff09; 1.1.1 使用FP16的优缺…

大渡口数字经济产业商会暨尼伽OLED透明屏产品发布会

2024年5月31日&#xff0c;大渡口数字经济产业商会成功举办了一场盛大的“商会数字经济发展项目签约大会”&#xff0c;活动上不仅深入探讨了构建“义渡新质生产力”及如何更好地“建功重庆西部大开发”的战略议题&#xff0c;还正式与尼伽OLED宣布达成战略合作伙伴关系&#x…

Java版工程项目管理系统源码:技术框架与功能实现全解析

在工程行业&#xff0c;项目管理的高效协同和信息共享是提升管理效率和精度的关键。本文将详细介绍一款采用先进技术框架的Java版工程项目管理系统&#xff0c;该系统支持前后端分离&#xff0c;功能全面&#xff0c;可满足不同角色的需求。从项目进度图表到施工地图&#xff0…

10个从基础到高级的GPT提示词优化指南

为一名大模型的深度用户和微软Copilot的首批开放测试者&#xff0c;很多人会问我如何写出高效的提示词。同时&#xff0c;也有不少读者反映&#xff0c;像ChatGPT和Claude这样的模型并没有想象中那么神奇&#xff0c;无法满足他们的实际需求。 首先我想说&#xff0c;确实像Ch…

双指针_复写零

复写零 题目描述&#xff1a; 题目链接&#xff1a;复写零 内容&#xff1a; 这道题目要求我们每遇到一次0就复写一遍&#xff0c;并且只能在原数组上进行修改&#xff0c;不能越界访问。 算法原理&#xff1a; 思路1&#xff1a; 如果我们用两个指针cur,dest同时从指向第一个…

c# 输出二进制字符串

参考链接 C#二进制输出数据_c# 输出二进制 123.5的方法-CSDN博客https://blog.csdn.net/a497785609/article/details/4572112标准数字格式字符串 - .NET | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings#BFo…

工业HMI设计,稳定压倒一切,那高颜值就不稳定了吗?

提及工业HMI设计&#xff0c;很多小伙伴就跳出来说&#xff0c;工业 HMI稳定是最重要的&#xff0c;颜值没比必要&#xff0c;花里呼哨的.我承认稳定的重要性&#xff0c;但是稳定与颜值并不是一对矛盾体。本文就分享为什么工业HMI稳定性重要&#xff1f;为什么高颜值也重要&am…

QT:QML中使用Loader加载界面

目录 一.介绍 二.实现 三.效果展示 四.代码 一.介绍 在QML中使用Loader加载界面&#xff0c;可以带来诸多好处&#xff0c;如提高应用程序的启动速度、动态地改变界面内容、根据条件加载不同的组件、更有效地使用内存以及帮助分割应用逻辑等。 1.延迟加载&#xff1a;QML…

动态规划2:面试题 08.01. 三步问题

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;面试…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第34课-进门播放欢迎光临的音效 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智…

R语言绘图 --- 柱状图(Biorplot 开发日志 --- 3)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形&#xff0c;如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包&#xff08;Biorplot&#xff09;&#xff0c;用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…

GITLAB常见问题总结

Troubleshooting GitLab Pages administration (FREE SELF) 原文地址 stage: Plan group: Knowledge info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/…

MWORKS车辆动力性经济性与热管理联合应用篇

一、引言 随着科技的飞速发展、环保意识的日益增强以及国家政策的大力支持&#xff0c;新能源汽车已经不再是遥不可及的未来科技&#xff0c;而是逐步走进千家万户&#xff0c;成为我们日常生活中不可或缺的一部分。然而&#xff0c;每到冬季的来临&#xff0c;纯电动汽车面临…

Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。在收集的信息中&#xff0c;应该有一条是搜索信息的时间。 1. date命令 的功能、格式和选项说明 我们可以使用命令 date --help 来查看 d…

巧用Jmeter Debug sampler获取变量信息

Jmeter Debug sampler介绍 Jmeter Debug sampler 可以帮助我们解决如下问题&#xff1a; debug参数化的变量取值是否正确 debug正则表达式提取器&#xff08;或json提取器&#xff09;提取的值是否正确 查看 JMeter 属性 具体使用方法 前提条件&#xff1a;添加查看结果树…

【Python】【matLab】模拟退火算法求二元高次函数最小值

一、目标函数 求二元高次函数的最小值。目标函数选择&#xff1a; 用于测试算法的简单的目标函数&#xff1a; 二、Python代码实现 import numpy as np# 目标函数&#xff08;2变量&#xff09; def objective_function(x):return x[0] ** 2 2 * x[0] - 15 4 * 4 * 2 * x[…

【开发心得】三步本地化部署llama3大模型

目录 第一步&#xff1a;启动ollama 第二步&#xff1a;启动dify 第三步&#xff1a;配置模型&#xff08;截图&#xff09; 最近llama3很火&#xff0c;本文追击热点&#xff0c;做一个本地化部署的尝试&#xff0c;结果还成功了&#xff01; 当然也是站在别人的肩膀上&…

DevOps中如何高效开展手工和自动化测试

在快速发展的软件开发行业中&#xff0c;DevOps实践已经成为提高软件交付速度和质量的关键。DevOps是一种文化和实践的集合&#xff0c;旨在促进开发&#xff08;Dev&#xff09;和运维&#xff08;Ops&#xff09;团队之间的协作和通信。测试作为DevOps生命周期中的重要组成部…