1 条题解
-
0
#include<bits/stdc++.h> using namespace std; // 使用标准命名空间 int main() // 主函数,程序从这里开始执行 { int n; // 定义一个整数变量n,用来存储用户输入的数字 cin >> n; // 从键盘输入一个数字,存到变量n中 int s = 0; // 定义一个累加器s,初始值为0,用来存储立方和(1³+2³+...) int x = 0; // 定义一个计数器x,初始值为0,用来记录当前加到第几个数字了 // 开始循环:当立方和s还没有超过n时,继续加下一个数字 for (int i = 1; s <= n; i++) // i从1开始,每次循环增加1 { s = s + i * i * i; // 计算i的立方(i*i*i),并加到累加器s中 x += 1; // 计数器x增加1(表示当前加到第x个数字) // 当s的值第一次超过n时,循环就会停止 } // 注意:循环停止时,x是第一个使总和超过n的数字 // 但我们实际需要的是总和不超过n的最大数字,所以要输出x-1 cout << x-1 << endl; // 输出结果(x-1) return 0; // 程序正常结束 } 通俗解释: 这个程序就像在玩一个"数字叠叠乐"游戏: 输入目标值:你输入一个数字 n(比如10) 开始累加: 先加 1³ = 1(s=1, x=1) 再加 2³ = 8(s=1+8=9, x=2) 再加 3³ = 27(这时s=9+27=36,已经超过10) 输出结果:当超过目标值时,最后一个没超过的数字是 x-1 = 2,所以输出2 关键点: s 是当前所有数字的立方和 x 是当前正在加的数字编号 循环停止时,x 是让总和超过 n 的数字 我们需要的是总和不超过 n 的最大数字,所以输出 x-1
- 1
信息
- ID
- 107
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 8
- 标签
- 递交数
- 13
- 已通过
- 8
- 上传者