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


如上图,有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好像可以不要....................

posted @ 2017-01-17 14:07  ljhl  阅读(553)  评论(0)    收藏  举报