1 条题解

  • 0
    @ 2025-10-24 17:18:37

    思路分析

    1. 任务拆解:

    • 读取总张数n
    • 将100元换成n张10元、5元、2元、1元钞票
    • 要求每种面额至少1张
    • 按字典序输出所有方案

    2. 关键点分析:

    • 设10元张数为i,5元张数为j,2元张数为k,1元张数为m
    • 约束条件:
      • i + j + k + m = n
      • 10i + 5j + 2k + m = 100
      • i ≥ 1, j ≥ 1, k ≥ 1, m ≥ 1
    • 通过三重循环枚举i、j、k,计算m

    3. 步骤规划:

    • 读取n的值
    • 外层循环枚举10元张数i(1到10,因为最多10张)
    • 中层循环枚举5元张数j(1到20,因为最多20张)
    • 内层循环枚举2元张数k(1到50,因为最多50张)
    • 计算1元张数m = n - i - j - k
    • 检查m ≥ 1且金额总和为100
    • 输出满足条件的方案

    4. 代码对应:

    • int n;cin>>n; → 读取总张数
    • for(int i=1;i<=10;i++) → 枚举10元张数
    • for(int j=1;j<=20;j++) → 枚举5元张数
    • for(int k=1;k<=50;k++) → 枚举2元张数
    • int m=n-i-j-k → 计算1元张数
    • if(m>0 && i*10+j*5+k*2+m==100) → 检查张数≥1且金额=100
    • cout<<i<<" "<<j<<" "<<k<<" "<<m<<endl → 输出方案
    • 1

    信息

    ID
    1137
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    (无)
    递交数
    261
    已通过
    171
    上传者