zoukankan      html  css  js  c++  java
  • 洛谷 P1603 斯诺登的密码

    链接:https://www.luogu.org/problemnew/show/P1603

    题目:

      题目背景

      根据斯诺登事件出的一道水题

      题目描述

      题目描述

      2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机。但是,这件事情太不周密了,因为FBI的间谍早已获悉他的具体位置——但这不是最重要的——最重要的是如果要去委内瑞拉,那么就要经过古巴,而经过古巴的路在美国的掌控之中。

      丧心病狂的奥巴马迫降斯诺登的飞机,搜查时却发现,斯诺登杳无踪迹。但是,在据说是斯诺登的座位上,发现了一张纸条。纸条由纯英文构成:Obama is a two five zero.(以"."结束输出,只有6个单词+一个句号,句子开头如没有大写亦为合法)这句话虽然有点无厘头,但是警官陈珺骛发现这是一条极其重要的线索。他在斯诺登截获的一台笔记本中找到了一个C++程序,输入这条句子后立马给出了相对应的密码。陈珺鹜高兴得晕了过去,身为警官的你把字条和程序带上了飞机,准备飞往曼哈顿国际机场,但是在飞机上检查的时候发现——程序被粉碎了!飞机抵达华盛顿只剩5分钟,你必须在这5分钟内编写(杜撰)一个程序,免受上司的10000000000%10大板。破译密码的步骤如下:

      (1)找出句子中所有用英文表示的数字(≤20),列举在下:

      正规:one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty

      非正规:a both another first second third

      (2)将这些数字平方后%100,如00,05,11,19,86,99。

      (3)把这些两位数按数位排成一行,组成一个新数,如果开头为0,就去0。

      (4)找出所有排列方法中最小的一个数,即为密码。

      // 数据已经修正 By absi2011 如果还有问题请联系我

      输入输出格式

      输入格式:

      一个含有6个单词的句子。

      输出格式:

      一个整型变量(密码)。如果没有符合要求的数字出现,则输出0。

      输入输出样例

      输入样例#1: 
      Black Obama is two five zero .
      输出样例#1: 
      425

    思路:

      好久没见到这么lan的题目了,毫无意义,拿两个字符串数组,一个存放单词,一个存放对应数字,之后循环判断一下输出条件,00不输出,0x考虑是否在开头,别的正常输出即可。(那俩数组还是我ctrl+c的)

    代码:

     1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 using namespace std;
     5  
     6 string num[27] = {"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve",
     7 "thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","a","both","another","first","second","third"};
     8 string sqare[27]={"01","04","09","16","25","36","49","64","81","100","21","44","69","96","25","56","89","24","61","00","01","04","01","01","04","09"};
     9 
    10 int main()
    11 {
    12     string word[6];
    13     string ans[6];
    14     int len = 0;
    15 
    16     for(int i=0;i<6;i++)
    17         cin>>word[i];
    18 
    19     for(int i=0;i<6;i++)
    20     {
    21         for(int j=0;j<26;j++)
    22         {
    23             if(word[i]==num[j])
    24                 ans[len++]=sqare[j];
    25         }
    26     }
    27     
    28     sort(ans, ans+len);
    29     
    30     if(len == 0) 
    31         cout<<"0";
    32     else
    33     {
    34         for(int i=0;i<len;i++)
    35         {
    36             if(i==0)
    37             {
    38                 if(ans[i]=="00")
    39                     continue;
    40                 else if(ans[i][0]=='0')
    41                     cout<<ans[i][1];
    42             }
    43             else if(i=0)
    44                 cout<<ans[i];
    45         }
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    Palindrome Partitioning
    Minimum Path Sum
    Maximum Depth of Binary Tree
    Minimum Depth of Binary Tree
    Unique Binary Search Trees II
    Unique Binary Search Trees
    Merge Intervals
    Merge Sorted Array
    Unique Paths II
    C++ Primer Plus 笔记第九章
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11225273.html
Copyright © 2011-2022 走看看