买小猫小狗

分析问题

题目要求用给定的金额 x 购买至少各一只小狗和小猫,且钱必须刚好用完。需要统计所有满足条件的购买方案数。

  • 约束条件
  1. 小狗数量 dog 和小猫数量 cat 均为正整数。
  2. 总金额满足方程:A*dog+B*cat=X
  • 遍历范围
    由于每只小狗价格为 A,dog数据范围为1 至 A*a<X。

建立模型

  1. 穷举所有可能的狗的数量
    遍历 dog 从1 至 A * dog < X remain = X- A*dog
  2. 验证剩余金额
    计算剩余金额 remaining=X−A*maining。若剩余金额满足 remaining / B 能整除,则对应的小猫数量 cat=remaining/B 是有效解。

编写代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int x,A,B,remain,dog,cat,count=0;
    cin>>x>>A>>B;
    for(int i=1;i*A<x;i++){
        dog = i;
        remain= x-i*A;
        cat=remain/B;
        if((dog*A+cat*B)==x)
//            cout<<i<<" "<<cat<<"\n";
            count++;
    }
    cout<<count;
    return 0;
}

保存 编译 运行