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

相关推荐

  1. OJ3829大石头搬运工

    2024-06-08 05:36:03       27 阅读
  2. 解决端口是0问题,解决mysql无法看到3306端口监听

    2024-06-08 05:36:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 05:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 05:36:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 05:36:03       82 阅读
  4. Python语言-面向对象

    2024-06-08 05:36:03       91 阅读

热门阅读

  1. HTML label 标签的作用和应用场景

    2024-06-08 05:36:03       24 阅读
  2. docker 启动

    2024-06-08 05:36:03       32 阅读
  3. STM32F103借助ESP8266连接网络

    2024-06-08 05:36:03       28 阅读
  4. shardingsphere5 自定义分片(sharding-algorithm)算法

    2024-06-08 05:36:03       31 阅读
  5. Git概念用法

    2024-06-08 05:36:03       27 阅读
  6. Sed流编辑器总结

    2024-06-08 05:36:03       29 阅读