• 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中最后一条语句表示不理解

  • 相关阅读:
    Android-使用AIDL挂断电话
    新变化---转战新博客
    Spring Cloud Config 分布式配置中心【Finchley 版】
    Spring Boot2.0 整合 Kafka
    Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsearch【Finchley 版】
    Spring MVC 5 + Thymeleaf 基于Java配置和注解配置
    【机器学习】使用gensim 的 doc2vec 实现文本相似度检测
    【机器学习】SKlearn + XGBoost 预测 Titanic 乘客幸存
    【深度学习】keras + tensorflow 实现猫和狗图像分类
    iScroll.js 向上滑动异步加载数据回弹问题
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/2939534.html
Copyright © 2020-2023  润新知