Description
牛牛是一种纸牌游戏,总共5张牌,规则如下: 如果找不到3张牌的点数之和是10的倍数,则为没牛; 如果其中3张牌的点数之和是10的倍数,则为有牛,剩下两张牌的点数和对10取余数,余数是几,就是牛几,特别的当余数是0的时候是牛牛; 例如: 1 2 3 4 5, 1 + 4 + 5 = 0 (mod 10),2 + 3 = 5(mod 10), 为牛5。
Input
第一行输入一个整数T(T <= 100),表示有几组数据。每组数据占一行,5 个数, 每个数的范围都是1到10。
Output
见样例。
Sample Input
3
1 1 1 1 1
1 2 3 4 5
1 9 10 10 10
Sample Output
Case #1: Mei Niu
Case #2: Niu 5
Case #3: Niu Niu
其中方法一WA
方法二,方法三AC
重点是多重for嵌套只要判断是否有牛即可;
方法一
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[])
{
int n;
while(scanf("%d",&n) !=EOF)
{
int a[n][7];
int i,j,k,l;
if(n<=100)
{
//初始化
for(i=0;i<=n-1;i++){
for(j=0;j<=6;j++){
a[i][j]=0;
}
}
//输入值
for(i=0;i<=n-1;i++){
for(j=0;j<=4;j++){
scanf("%d",&a[i][j]);
a[i][5]+=a[i][j];
}
}
//判断牛牛
int t=0;
for(i=0;i<=n-1;i++){
for(j=0;j<=2;j++){
for(k=i+1;k<=3;k++){
for(l=k+1;l<=4;l++){
if( (a[i][j]+a[i][k]+a[i][l])%10==0){
if((a[i][5]-a[i][j]-a[i][k]-a[i][l])%10==0)
{
a[i][6]=10;
}
else{
if(a[i][6]<(a[i][5]-a[i][j]-a[i][k]-a[i][l])%10)
a[i][6]=(a[i][5]-a[i][j]-a[i][k]-a[i][l])%10;
}
}
}
}
}
}
//输出
if(a[i][6]==0)
printf("Case #%d: Mei Niu\n",i+1);
else if(a[i][6]==10)
printf("Case #%d: Niu Niu\n",i+1);
else
printf("Case #%d: Niu %d\n",i+1,a[i][6]);
}
}
}
return 0;
}
方法二
#include<stdio.h>
int main(void)
{
int a[5];
int n,o;
int sum1;
while(scanf("%d",&n) !=EOF)
{
if(n<=100)
{
for(o=0;o<n;o++)
{
int l,b;
for(l=0;l<5;l++)
{
scanf("%d",&b);
a[l]=b;
}
int b1=0,b2=0;
int i,j,k,i1;
//start for
for(i=0;i<=2;i++)
{
for(j=i+1; j<=3; j++)
{
for(k=j+1; k<=4; k++)
{
if((a[i]+a[j]+a[k])%10==0)
{
b1=1;
sum1=0;
for(i1=0;i1<=4;i1++)
{
if(i1!=i && i1!=j && i1!=k)
{
sum1+=a[i1];
}
}
if(sum1%10==0)
{
b2=1;
}
}
}
}
}//End for
if(b1)//有牛
{
if(b2)//牛牛
{
printf("Case #%d: Niu Niu\n",o+1);
}
else
{
printf("Case #%d: Niu %d\n",o+1,(sum1%10));
}
}
else//没牛
{
printf("Case #%d: Mei Niu\n",o+1);
}
}//End for o
}//end for if
}//end for while
return 1;
}
方法三
#include<stdio.h>
int main()
{
int t,a[5];
scanf("%d",&t);
int b=0;
while(t--)
{
for(int i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
b++;
int m=0,n=0,sum;
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
for(int k=j+1;k<5;k++)
{
if((a[i]+a[j]+a[k])%10==0)
{
m=1;
sum=a[0]+a[1]+a[2]+a[3]+a[4];
if(sum%10==0)
n=1;
}
}
}
}
if(m==0)
printf("Case #%d: Mei Niu\n",b);
else if(m==1&&n==1)
printf("Case #%d: Niu Niu\n",b);
else
printf("Case #%d: Niu %d\n",b,sum%10);
}
return 0;
}