1 条题解

  • 0
    @ 2025-7-21 14:35:03
    #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
    上传者