1 条题解

  • 0
    @ 2025-10-30 16:30:08

    思路分析

    1. 任务拆解:

    • 读取整数n
    • 找出1到n-1中所有没有生成元的数字(寂寞数字)
    • 按升序输出这些数字

    2. 关键点分析:

    • 生成元定义:如果j + j的各位数字之和 = i,则j是i的生成元
    • 寂寞数字:没有任何j能生成它
    • 对于每个i,检查所有可能的j(j < i)是否能生成i
    • 如果没有任何j能生成i,则i是寂寞数字

    3. 步骤规划:

    • 读取n的值
    • 遍历1到n-1的每个数字i:
      • 遍历1到i-1的每个可能的生成元j
      • 计算j + j的各位数字之和
      • 如果等于i,说明i有生成元,跳过
      • 如果遍历完所有j都没有生成元,输出i

    4. 代码对应:

    • cin>>n; → 读取整数n
    • for(int i=1;i<n;i++) → 遍历1到n-1的每个数字i
    • for(int j=1;j<=i;j++) → 遍历可能的生成元j
    • if(j==i) cout<<i<<endl; → 如果所有j都检查完且没找到生成元,输出i
    • int t=j,jj=j; → 计算j + j的各位数字之和
    • while(jj) t+=jj%10; jj/=10; → 计算各位数字之和
    • if(t==i) break; → 如果j能生成i,跳出内层循环
    • 1

    信息

    ID
    875
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    (无)
    递交数
    34
    已通过
    16
    上传者