• 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个单词的句子。

     

    输出格式:

     

    一个整型变量(密码)。

    输入输出样例

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

    输入输出样例

    想不出别的什么方法,

    只能模拟打表,,

    感觉弄了好长时间。。。

    打表就需要考虑很多特殊情况。。

    然后这儿也用到了字符串快排。

    代码虽然长,但应该不难理解。

    代码:

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cmath>
      4 #include<algorithm>
      5 #include<cstring>
      6 #include<queue>
      7 #include<map>
      8 using namespace std;
      9 
     10 string a[8];
     11 string b[233];
     12 int t;
     13 
     14 bool cmp(string x,string y)
     15 {
     16     return x+y<y+x;
     17 }
     18 
     19 int main()
     20 {
     21     for(int i=1;i<=6;++i)
     22     {
     23         cin>>a[i];
     24         if(a[i]=="one"||a[i]=="a"||a[i]=="first") 
     25         {
     26             t++;
     27             b[t]="01";
     28          } 
     29         if(a[i]=="two"||a[i]=="both"||a[i]=="second") 
     30         {
     31             t++;
     32             b[t]="04";
     33          } 
     34          if(a[i]=="three"||a[i]=="another"||a[i]=="third") 
     35         {
     36             t++;
     37             b[t]="09";
     38          } 
     39          if(a[i]=="four") 
     40         {
     41             t++;
     42             b[t]="16";
     43          } 
     44          if(a[i]=="five") 
     45         {
     46             t++;
     47             b[t]="25";
     48          } 
     49          if(a[i]=="six") 
     50         {
     51             t++;
     52             b[t]="36";
     53          } 
     54          if(a[i]=="seven") 
     55         {
     56             t++;
     57             b[t]="49";
     58          } 
     59          if(a[i]=="eight") 
     60         {
     61             t++;
     62             b[t]="64";
     63          } 
     64          if(a[i]=="nine") 
     65         {
     66             t++;
     67             b[t]="81";
     68          } 
     69          if(a[i]=="ten") 
     70         {
     71             t++;
     72             b[t]="00";
     73          } 
     74          if(a[i]=="eleven") 
     75         {
     76             t++;
     77             b[t]="21";
     78          } 
     79          if(a[i]=="twelve") 
     80         {
     81             t++;
     82             b[t]="44";
     83          } 
     84          if(a[i]=="thirteen") 
     85         {
     86             t++;
     87             b[t]="69";
     88          } 
     89          if(a[i]=="fourteen") 
     90         {
     91             t++;
     92             b[t]="96";
     93          } 
     94          if(a[i]=="fifteen") 
     95         {
     96             t++;
     97             b[t]="25";
     98          } 
     99          if(a[i]=="sixteen") 
    100         {
    101             t++;
    102             b[t]="56";
    103          } 
    104          if(a[i]=="seventeen") 
    105         {
    106             t++;
    107             b[t]="89";
    108          } 
    109          if(a[i]=="eighteen") 
    110         {
    111             t++;
    112             b[t]="24";
    113          } 
    114          if(a[i]=="nineteen") 
    115         {
    116             t++;
    117             b[t]="61";
    118          } 
    119          if(a[i]=="twenty") 
    120         {
    121             t++;
    122             b[t]="81";
    123          } 
    124     }    
    125     if(t==0)
    126     {
    127         printf("0");
    128         return 0;
    129     }
    130     sort(b+1,b+t+1,cmp);
    131     if(b[1]=="01")
    132     {
    133         cout<<1;
    134         for(int i=2;i<=t;++i)
    135         {        
    136             if(b[i]=="00") continue;
    137             cout<<b[i];
    138         }
    139         return 0;    
    140      } 
    141     if(b[1]=="04") 
    142     {
    143         cout<<4;
    144         for(int i=2;i<=t;++i)
    145         {        
    146             if(b[i]=="00") continue;
    147             cout<<b[i];
    148         }
    149         return 0;    
    150     }
    151     if(b[1]=="09") 
    152     {
    153         cout<<9;
    154         for(int i=2;i<=t;++i)
    155         {        
    156             if(b[i]=="00") continue;
    157             cout<<b[i];
    158         }
    159         return 0;    
    160     }
    161     for(int i=1;i<=t;++i)
    162     {        
    163         if(b[i]=="00") continue;
    164         cout<<b[i];
    165     }    
    166     return 0;
    167 }

    如果你不开心,那我就把右边这个帅傻子分享给你吧, 

    你看,他这么好看,那么深情的望着你,你还伤心吗? 

    真的!这照片盯上他五秒钟就想笑了。 

    一切都会过去的。

  • 相关阅读:
    算法导论课后习题解析 第六章
    算法导论课后习题解析 第二章
    如果你也是.NET程序员
    查询对象模式
    为什么要面向对象呢
    HTTP强缓存和协商缓存 F
    MFC Dialog改变大小后,控件随之改变方法
    关于C++类型萃取
    docker配置docker
    idea 全局搜索(Ctrl+Shift+F)不能使用解决办法
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/9432826.html
Copyright © 2020-2023  润新知