• Uva 621 Secret Research


    Secret Research 

    At a certain laboratory results of secret research are thoroughly encrypted. A result of a single experiment is stored as an information of its completion:


    `positive result', `negative result', `experiment failed' or `experiment not completed'


    The encrypted result constitutes a string of digits S, which may take one of the following forms:

    
    $\bullet$
    positive result 		 S = 1 or S = 4 or S = 78 
    $\bullet$
    negative result 		 S = S35 
    $\bullet$
    experiment failed 		 S = 9S4 
    $\bullet$
    experiment not completed 		 S = 190S
    

    (A sample result S35 means that if we add digits 35 from the right hand side to a digit sequence then we shall get the digit sequence corresponding to a failed experiment)


    You are to write a program which decrypts given sequences of digits.

    Input 

    A integer n stating the number of encrypted results and then consecutive n lines, each containing a sequence of digits given as ASCII strings.

    Output 

    For each analysed sequence of digits the following lines should be sent to output (in separate lines):

    
    		 + 		  for a positive result
    		 - 		  for a negative result
    		 * 		  for a failed experiment
    		 ? 		  for a not completed experiment
    

    In case the analysed string does not determine the experiment result, a first match from the above list should be outputted.

    Sample Input 

    4
    78
    7835
    19078
    944
    

    Sample Output 

    +
    -
    ?
    *
    

    Miguel A. Revilla 
    2000-01-10
     
     
     
    #include<stdio.h>
    #include<string.h>
    
    char s[1002];
    
    int main()
    {
        int n, len;
        scanf("%d", &n);
        while(n--)
        {
            scanf("%s", s);
            len = strlen(s);
            if(strcmp(s, "1") == 0 || strcmp(s, "4") == 0 || strcmp(s, "78") == 0)
                printf("+\n");
            else if(s[len-1] == '5' && s[len-2] == '3') 
                printf("-\n");
            else if(s[0] == '9' && s[len-1] == '4')
                printf("*\n");
            else if(strstr(s, "190") != NULL && strstr(s, "190") - s == 0)
                printf("?\n");
        } 
        return 0;
    }

    解题思路:

    我对这题感到无语,看题目就纠结了我很久了:

    (个人观点)

    1〉开始没有较为醒目的提示说明只能符合这四种情况的S,

    2>中间括号对 S35 的解释表示不理解

    3>在Output中最后一条语句表示不理解

  • 相关阅读:
    设计模式学习笔记-观察者模式
    谈C#中的Delegate
    EF 增删改查 泛型方法、类
    什么是表达式树,它与表达式、委托有什么区别?
    查询出各个学科的前3名的同学信息的Sql
    row_number() OVER(PARTITION BY)函数介绍
    Asp.net WebApi 项目示例(增删改查)
    ASP.NET WebAPI从入门
    .net中的Queue和Stack
    Replication--数据库镜像阻塞复制日志读取器的解决的办法
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/2939534.html
Copyright © 2020-2023  润新知