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