买公园门票

分析问题

已知条件为成人为8 儿童为3元,共花掉40元,求团内成人和儿童票有几种情况;

通过数字来查找规律,

当成人adult为1 40-8*1=32 →32/3=10.666,儿童数不是整数,不输出。

当成人adult为2 40-8*2=24 →24/3=8 →b=8,符合条件,输出2 8。

当成人adult为3 40-8*3=16 →16/3≈5.333,不整数,不输出。

约束条件:

成人的边界值为 40/8 即 8*adult 一定小于40 (因为成人和儿童票都需要有)

儿童child 为 40 – adult * 8

还需要满足:adult* 8 + child*3 = 40

建立模型

  1. 穷举所有可能的成人数量
    遍历 adult 从1到 40/adult,计算对应的 儿童数child = (40 - 8*adult) / 3
  2. 筛选有效解
    child 必须为正整数且满足 b ≥ 1
  3. 排序规则
    按成人人数从小到大输出

编写代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int adult,child,remain;
    for(adult =1;adult*8<40;adult++){
        remain = 40- adult*8;
        if(remain%3!=0) continue;
        child = remain/3;
        if(adult*8+child*3 == 40)
        {
            cout<<adult<<" "<<child<<"\n";
        }
    }
    return 0;
}

保存 编译 运行