C++枚举算法(终于三级啦!!!!!!!!!!!)

数字方格

题目描述 :

__________________________

|                 |                |                |

|       a1      |      a2      |      a3      |

|                 |                |                |

——————————————--

如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3。 已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3 的倍数, a1 + a2 + a3是5的倍数。你的任务是找到一组a1,a2, a3,使得a1 + a2 + a3最大。 输入 一行,包含一个整数n (0 <= n <= 100)。 输出 一个整数,即a1 + a2 + a3的最大值。

样例输入

3

样例输出

5

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int ma=-1;
	for(int a1=0;a1<=n;a1++)
	{
		for(int a2=0;a2<=n;a2++)
		{
			for(int a3=0;a3<=n;a3++)
			{
				if((a1+a2)%2==0&&(a2+a3)%3==0&&(a1+a2+a3)%5==0)
				{
					ma=max(ma,a1+a2+a3);
				}
			}
		}
	}
	cout<<ma;
	
	
	return 0;
 } 

鸡兔同笼

题目描述: 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面,注意!至少有多少只动物!,!至多有多少只动物!注意。 输入 一行,一个正整数a (a < 32768)。 输出 一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。 如果没有满足要求的答案,则输出两个0,中间用一个空格分开。

样例输入

20

样例输出

5 10

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int mi=99999;
	int ma=-1;
	bool f=true; 
	for(int i=0;i<=n;i++)
	{
		int j=(n-i*2)/4;
		if(j>=0&&i*2+j*4==n)
		{
			f=false;
			mi=min(mi,i+j);
			ma=max(ma,i+j);
		}
	}
	if(f==true)
	{
		cout<<0<<" "<<0;
	}
	else
	{
		cout<<mi<<" "<<ma;
	}
	
	
	return 0;
 } 

两倍

题目描述: 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一 个数的两倍。比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9 的两倍。 输入 一行,给出2到15个两两不同且小于100的正整数。最后用0表示输入结束。 输出 一个整数,即有多少个数对满足其中一个数是另一个数的两倍。

注意!这次没有限制输入的个数,而是用 0 结尾,千万不要写错!

样例输入

1 4 3 2 9 7 18 22 0

样例输出

3

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[110];
	int n=0;
	for(int i=0;i<15;i++)
	{
		int tmp;
		cin>>tmp;
		if(tmp!=0)a[n]=tmp;
		else break;
		n++;
	}
	int cnt=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(a[i]==a[j]*2)
			{
				cnt++;
			}
		}
	}
	cout<<cnt;
	
	
	return 0;
 } 

完美立方

题目描述: 形如a^3= b^3 + c^3 + d^3的等式被称为完美立 方等式。例如123= 6^3 + 8^3 + 10^3 。编写一 个程序,对任给的正整数N (N≤100),寻找所有 的四元组(a, b, c, d),使得a^3 = b^3 + c^3 + d^3, 其中a,b,c,d 大于 1, 小于等于N,且b<=c<=d。 输入 一个正整数N (N≤100)。 输出 每行输出一个完美立方。输出格式为:

Cube = a, Triple = (b,c,d)

其中a,b,c,d所在位置分别用实际求出四元组值代入。 请按照a的值,从小到大依次输出。当两个完美立 方等式中a的值相同,则b值小的优先输出、仍相 同则c值小的优先输出、再相同则d值小的先输出。

样例输入

24

样例输出

Cube = 6, Triple = (3,4,5)

Cube = (9) Triple = (1,6,8)

Cube = 12, Triple = (6,8,10)

Cube = 18, Triple = (2,12,16)

Cube = 18, Triple = (9,12,15)

Cube = 19, Triple = (3,10,18)

Cube = 20, Triple = (7,14,17)

Cube = 24, Triple = (12,16,20)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	for(int a=1;a<=n;a++)
	{
		for(int b=1;b<=n;b++)
		{
			for(int c=b;c<=n;c++)
			{
				for(int d=c;d<=n;d++)
				{
					if(a*a*a==b*b*b+c*c*c+d*d*d)
					{
						printf("Cube = (%d) Triple = (%d,%d,%d)\n",a,b,c,d);
					}
				}
			}
		}
	}
	
	
	return 0;
}

和数

给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列 1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 输入 共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个不大于10000的正整数 组成的数列,相邻两个整数之间用单个空格隔开。 输出 一个整数,即数列中等于其他两个数之和的数的个数。

样例输入

4

1 2 3 4

样例输出

2

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	int cnt=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			for(int k=1;k<n;k++)
			{
				if(a[k]!=a[j]&&a[k]!=a[i]&&a[j]!=a[i]&&a[j]+a[k]==a[i])
				{
					cnt++;
				}
			}
		}
	}
	cout<<cnt;
	
	
	return 0;
}

因子问题

题目描述: 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 输入 包括两个整数N、M。N不超过1,000,000。 输出 输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1

样例输入

35 10

样例输出

5

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m;
	cin>>n>>m;
	for(int a=2;a<m-2;a++)
	{
		if(n%a==0&&n%(m-a)==0)
		{
			cout<<a;
			return 0;
		}
	}
	cout<<-1;
	
	
	return 0;
}
  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值