POJ1013

简介: 大致题意: 有一打(12枚)硬币,其中有且仅有1枚假币,11枚真币 用A~L作为各个硬币的代号 假币可能比真币略轻,也可能略重 现在利用天枰,根据Input输入的3次称量,找出假币,并输出假币是轻还是重。

大致题意:

有一打(12枚)硬币,其中有且仅有1枚假币,11枚真币

用A~L作为各个硬币的代号

假币可能比真币略轻,也可能略重

现在利用天枰,根据Input输入的3次称量,找出假币,并输出假币是轻还是重。

 

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int Abs(int a)
{
    return a>0?a:(-a);
}
int vis[15];
int main()
{
    int i,j,T,k;int ans;
    char str1[10],str2[10],str3[10];
    scanf("%d",&T);
    getchar();
    while(T--)
    {
        ans=0;
        for(i=1;i<=12;i++)
        {
            vis[i]=10;
        }
        for(k=1;k<=3;k++)
        {
            //getchar();
            memset(str1,0,sizeof(str1));
            memset(str2,0,sizeof(str2));
            memset(str3,0,sizeof(str3));
            scanf("%s %s %s",str1,str2,str3);
            if(strcmp(str3,"even")==0)
            {
                for(i=0;str1[i]!='\0';i++)
                    vis[str1[i]-'A'+1]=0;
                for(i=0;str2[i]!='\0';i++)
                    vis[str2[i]-'A'+1]=0;
            }                
            else if(strcmp(str3,"up")==0)
            {
                for(i=0;str1[i]!='\0';i++)
                if(vis[str1[i]-'A'+1]!=0)
                    vis[str1[i]-'A'+1]++;//左边重假币 
                for(i=0;str2[i]!='\0';i++)
                if(vis[str2[i]-'A'+1]!=0)
                    vis[str2[i]-'A'+1]--;//右边轻假币 
            }
            else
            {
                for(i=0;str1[i]!='\0';i++)
                if(vis[str1[i]-'A'+1]!=0)
                    vis[str1[i]-'A'+1]--;//左边轻假币 
                for(i=0;str2[i]!='\0';i++)
                if(vis[str2[i]-'A'+1]!=0)
                    vis[str2[i]-'A'+1]++;//右边重假币
            }
            ans=0;
            for(i=1;i<=12;i++)
            {
                if(Abs(vis[i]-10)>Abs(ans)&&vis[i]!=0)
                    {
                        ans=vis[i]-10;
                        j=i;
                       // printf("%d\n",j);
                    }
            }
        }
        if(ans>0)
            printf("%c is the counterfeit coin and it is heavy.\n",j+64);
        else
            printf("%c is the counterfeit coin and it is light.\n",j+64);
    }
    system("pause");
    return 0;
}
            
         
         
            
        
    
    

 

目录
相关文章
POJ 2487 Stamps
POJ 2487 Stamps
106 0
|
算法 数据建模 机器学习/深度学习
|
JavaScript
poj-1006-Biorhythms
Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。
624 0
POJ-1003-hangover
Description How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length.
769 0
POJ 2487 Stamps
Description Background Everybody hates Raymond. He’s the largest stamp collector on planet earth and because of that he always makes fun of all the others at the stamp collector parties.
1067 0
POJ 2262 Goldbach&#39;s Conjecture
Problem Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the foll...
1013 0
|
机器学习/深度学习 算法