ACM第四题-----数字方格

本文介绍了一个数学问题的解决方法,该问题要求在特定条件下找出三个整数a1,a2,a3之和的最大值。通过使用简单的暴力搜索算法,文章给出了一种可行的解决方案,并提供了完整的C语言代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


如上图,有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最大。

Input 一行,包含一个整数n (0 <= n <= 100)。 Output 一个整数,即a1 + a2 + a3的最大值。 Sample Input

3

Sample Output

5



#include<stdio.h>
int main()
{
	int n,i,max=0;
	scanf("%d",&n);
	int a[5]={0}; 
	while(i<=n)
	{
		for(a[0]=0;a[0]<=n;a[0]++)
			{
				for(a[1]=0;a[1]<=n;a[1]++)
				{
					for(a[2]=0;a[2]<=n;a[2]++)
						if((a[0]+a[1])%2==0)
							if((a[1]+a[2])%3==0)
							if((a[1]+a[2]+a[0])%5==0)
							{	if(max<a[1]+a[2]+a[0])
									max=a[1]+a[2]+a[0];
								
							}
				}
			}
		i++;
	}
	printf("%d",max); 
}



一道水题,用大暴力就可以算出来,不过大暴力应该是最蠢的方法吧 4个循环套在一起效率会很低,应该有别的方法提高效率。不过以我的水平......我暂时想不到别的,想到在补充。


补充:突然发现我那个while好像可以不要....................

转载于:https://www.cnblogs.com/ljzh/p/6292837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值