zoukankan      html  css  js  c++  java
  • 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中最后一条语句表示不理解

  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/2939534.html
Copyright © 2011-2022 走看看