分析问题
已知条件为成人为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
建立模型
- 穷举所有可能的成人数量:
遍历adult从1到 40/adult,计算对应的 儿童数child = (40 - 8*adult) / 3。- 筛选有效解:
child必须为正整数且满足b ≥ 1。- 排序规则:
按成人人数从小到大输出
编写代码
#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;
}