题目描述
Kiki⽤n元买n⽀笔,单价:钢笔3元,圆珠笔2元,铅笔0.5元问:各买多少⽀(每种笔⾄少⼀支)。
输入描述:
一个整数n(1 ≤ n ≤ 200 )。
输出描述:
如果存在多个答案,每行输出一组答案,3个整数,空格间隔,分别表示钢笔、圆珠笔、铅笔各买多少。如果答案不存在,输出“Not found!”。
满足条件为:用n元买n支笔,其中钢笔的单价为3元,圆珠笔的单价为2元,铅笔的单价为0.5元,要求每种笔至少买一支。
代码中的三个嵌套for循环分别代表钢笔、圆珠笔和铅笔的数量。循环的取值范围分别为[1, n/3],[1, n/2]和[1, n*2],保证了每种笔至少买一支。
在每一次循环中,判断是否满足以下两个条件:
1. 3倍钢笔数量 + 2倍圆珠笔数量 + 0.5倍铅笔数量等于n(即总价等于n)
2. 钢笔数量 + 圆珠笔数量 + 铅笔数量等于n(即笔的总数量等于n)
如果满足这两个条件,就输出当前的钢笔数量、圆珠笔数量和铅笔数量,并将计数变量m加1。
最后,如果没有找到满足条件的整数分解,即m仍为0,程序输出"Not found!"。
代码
#include <iostream>
using namespace std;
int main()
{
int n,m=0;
cin>>n;
for(int i=1;i<=n/3;i++)
{
for(int j=1;j<=n/2;j++)
{
for(int k=1;k<=n*2;k++)
{
if(3*i+j*2+k*0.5==n&&i+j+k==n)
{
cout<<i<<" "<<j<<" "<<k<<endl;
m++;
}
}
}
}
if(m==0)
{
cout<<"Not found!"<<endl;
}
}