枚举法2

兑换硬币
用一张一元票换1分、2分和5分的硬币,每种至少一枚, 问有几种换法?
输入

输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	for(int i=1;i<=100-2-5;i++){
		for(int j=1;j<=100-(i*1)-5;j++){
			int k =(100-i*1-j*2)*5;
			if(i*1+j*2+k*5==100&&i+j+k==100){
				cout<<i<<" "<<j<<" "<<k<<endl;
			}
		}
	}
}

购买文具
题目描述
新学年就要开始了,爸爸把N元钱给了小青,让他购买一批文具,并作了以下要求:只能买圆珠笔、铅
笔和铅笔芯,并且每样至少买一支,总数要超过30支,而且钱要全部花完。
当小青去到文具店时,发现圆珠笔8角钱一支、铅笔2角钱一支、铅笔芯1角钱一支。小青怎么买才能符
合爸爸的要求呢?请你编个程序帮他算出符合购买要求的所有方案总数。
输入
一个整数N,表示购买文具一共的元数。(1 <= N <= 50)
输出
一个整数,即符合购买要求的所有方案总数。
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	int n;
	cin>>n;
	int cnt=0;
	for(int i=1;i<=n-1-2;i++){
		for(int j=1;j<=n-(i*8)-1;j++){
			int k =(100-i*8-j*2)*1;
			if(i*8+j*2+k*1==n){
			    cnt++;
			}
		}

搬砖问题
36 块砖, 36 人搬。男搬 4 ,女搬 3 ,两个小儿抬一砖。要求一次全搬完。问需男、女、
小儿各若干?
注意:假设男、女、小孩都有,请按照男、女、小孩的顺序输出所有可能的人数分配,每
种人数分配方案占1行,每个数字空格隔开。
输入

输出
所有可能的人数分配方案,按照由小到大输出
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	for(int i=1;i<=(36-2-1)*4;i++){
		for(int j=1;j<=(36-i-2)*3;j++){
			int k =(36-i*4-j*3)*2;
			if(i*4+j*3+k/2==36&&i+j+k==36){
				cout<<i<<" "<<j<<" "<<k<<endl;
			}
		}
	}
}

马克思手稿的问题
马克思手稿中有一道趣味数学题:有30个人,其中可能有男人、女人和小孩,在一家饭
馆里吃饭共花了50先令,假设每个男人各花3先令,每个女人各花2先令,每个小孩各花
1先令,问男人、女人和小孩各有几人?(注意:不一定男人、女人、小孩都有)
输入

输出
每行3个数,按照男人、女人、小孩的顺序,由小到大依次输出所有可能的人数方案
(男人、女人、小孩其中某些人的数量可以为0)
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	for(int i=0;i<=50;i++){
		for(int j=0;j<=50-i*3;j++){
			int k =(36-i*3-j*2)*1;
			if(i*3+j*2+k*1==50){
			    cout<<i<<" "<<j<<" "<<k;
		}
	}
	}
}

桐桐的计算


这个周末数学老师布置了一道有趣的题目,意思是:九头鸟(传说中的一种怪鸟,它有九个
头,两只脚)、鸡和兔子关在一个笼子里。数数它们的头正好是100个,数数它们的脚也正
好是100只。老师让桐桐编程计算其中九头鸟、鸡和兔子各有多少只,你能帮助桐桐吗?
输入

输出
前面若干行,每行输出满足题目条件的一个解,共三个数,分别
表示九头鸟、鸡和兔子的只数,最后一行输出题目解的总数。
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	for(int i=0;i<=100-2-4;i++){
		for(int j=0;j<=100-i*2-4;j++){
			int k =(100-i*2-j*2)*4;
			if(i*2+j*2+k*4==100&&i*9+j*1+k*1==100){
			    cout<<i<<" "<<j<<" "<<k;
		}
	}
	}
}

姐妹对数
给定两个不同的正整数x,y,若x+y能被3除尽或能被7除尽,则称x,y为姐妹数对。例如:
2,4;2,5;为姐妹数对。
3,14; 不是姐妹数对。
那么,对给出的一个整数n(1≤n≤100), 1,2,…,n之间有多少个姐妹数。
输入
一个整数n
输出
一个整数,即1~n之间姐妹数对的个数。
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	int n;
	cin>>n;
	int cnt=0;
	for(int i=1;i<=n-1;i++){
		for(int j=1;j<=n-1;j++){
			if((i+j)%3==0 || (i+j)%7==0){
			    cnt++;
		    }
	    }
	}

四个人的年龄求解
张三、李四、王五、刘六他们四人的年龄是一个等差数列,且年龄相加是26,
相乘是880,请问这四个人可能的年龄分别是多少?(假设一个人的年龄范
围在1~130之间)
输入

输出
按照由小到大输出四个人的年龄的可能的值,数与数用空格隔开,每个可能的年龄方
案一行,请输出所有可能的年龄方案!
 

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
	for(int i=1;i<=26-3-4-1;i++){
		for(int j=1;j<=26-2-1;j++){
			for(int k=0;i<=26-1;k++){
			    int l=26-i-j-k;
				if(i+j+k+l==26&&i*j*k*l==880&&j-i==k-j&&k-j==k-l){
					cout<<i<<" "<<j<<" "<<k<<" "<<l<<endl;			
				}
			}
	    }
	}

一个六位数
有一个六位数,其个位数字7,现将个位数字移至首位(十万位),而其余各位数字
顺序不变,均后退一位,得到一个新的六位数,假如新数为旧数的4倍,求原来的六
位数。
一个六位数
输入

输出

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
    int sum=0;
	for(int i=100000;i<=999999;i++){
	    int q=i%10;
		sum=(i+q*1000000)/10;
		if(sum/4==i){
			cout<<sum<<endl;
		}
	}
}

猴子吃桃子

问题:猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,又多吃了一
个;第二天又将剩下的桃子吃掉一半又多吃了一个;以后每天早上都吃了前一天剩下
的一半零一个。到了第十天想再吃时,见只剩下一个桃子,求第一天共摘了多少个桃
子?
猴子吃桃子
输入

输出
一个整数,第一天共有多少个桃子

#include<iostream>//头文件
#include<string.h>
using namespace std;//命名空间
int main()  
{
    int sum=0;
	for(int i=1;i<=9;i++){
		sum =(sum+1)*2;
	}
	cout<<sum;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值