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)找出所有排列方法中最小的一个数,即为密码。

输入格式

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

输出格式

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

输入 #1

Black Obama is two five zero .

输出 #1

425

Accepted

来源:洛谷

注意:除了第一位外,其他比10小的都要补0.

这题我看了题解使用map感觉map的作用与swift中的tuples很像,使用的时候也很方便:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <cstring>
  4. #include<map>
  5. #include<algorithm>
  6. #include <iostream>
  7. #include <stdio.h>
  8. using namespace std;
  9. map<string,int>num;
  10. int word[100];
  11. char str[100];
  12. int top;
  13. int main(){
  14. num["one"]=1;
  15. num["two"]=2;
  16. num["three"]=3;
  17. num["four"]=4;
  18. num["five"]=5;
  19. num["six"]=6;
  20. num["seven"]=7;
  21. num["eight"]=8;
  22. num["nine"]=9;
  23. num["ten"]=10;
  24. num["eleven"]=11;
  25. num["twelve"]=12;
  26. num["thirteen"]=13;
  27. num["fourteen"]=14;
  28. num["fifteen"]=15;
  29. num["sixteen"]=16;
  30. num["seventeen"]=17;
  31. num["eighteen"]=18;
  32. num["nineteen"]=19;
  33. num["twenty"]=20;
  34. num["a"]=1;
  35. num["both"]=2;
  36. num["another"]=1;
  37. num["first"]=1;
  38. num["second"]=2;
  39. num["third"]=3;//打表
  40. int i;
  41. for(i=1;i<=6;i++){
  42. scanf("%s",str);
  43. if(num[str]){
  44. int sum=0;
  45. sum=num[str]*num[str]%100;
  46. if(!sum) continue;
  47. word[top++]=sum;
  48. }
  49. }
  50. sort(word,word+top);
  51. printf("%d",word[0]);
  52. for(i=1;i<top;i++){
  53. if(word[i]<10) printf("0");
  54. printf("%d",word[i]);
  55. }
  56. }

P1538 迎春舞会之数字舞蹈

题目背景

HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。

题目描述

在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。

为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是趴在地上,保证横竖。

现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。

输入格式

第一行为k。k表示要摆出数字的大小。

第二行为全部由数字组成的字符串,即要摆出的几个数字。

输出格式

按题目要求输出。

输入 #1

2

1234567890

输出 #1


| | | | | | | | | | | | | |

| | | | | | | | | | | | | |

-- -- -- -- -- -- --

| | | | | | | | | | | | |

| | | | | | | | | | | | |

-- -- -- -- -- -- --

Accepted

来源:洛谷

按输出的线分为5部分,第1、3、5部分全为横线,第2、4部分全为竖线,中间夹杂着一些空格

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <cstring>
  4. #include<algorithm>
  5. #include <iostream>
  6. #include <stdio.h>
  7. using namespace std;
  8. int list[10][5]{{1,3,0,3,1},{0,2,0,2,0},{1,2,1,1,1},
  9. {1,2,1,2,1},{0,3,1,2,0},{1,1,1,2,1},{1,1,1,3,1},
  10. {1,2,0,2,0},{1,3,1,3,1},{1,3,1,2,1}};;//第一维是要输出的数字,第二维对应着第几部分
  11. /*
  12. 上面的二维数组list就是编码表
  13. list[i][j]表示数字i第j+1部分对应的编码(注意,是第j+1部分!)
  14. 这里我们分两种情况讨论
  15. 1:j为偶数
  16. j为偶数时,我们的编码只有2种,1和0.
  17. 1表示横线,0表示空
  18. 2:j为奇数
  19. j为奇数时,我们的编码有3种,0、1、2、3.
  20. 1表示左边有竖线,0表示空,2表示右边有竖线,3表示左边和右边都有竖线
  21. */
  22. int k;
  23. bool odd(int x){return x%2;}//判断奇数
  24. void draw(int a,int b,int size){//绘制数字的函数
  25. if(list[a][b]==1){
  26. if(!odd(b)){
  27. putchar(' ');
  28. for(int i=1;i<=size;i++) putchar('-');
  29. putchar(' ');
  30. }
  31. else{
  32. putchar('|');
  33. for(int i=1;i<=size;i++)putchar(' ');
  34. putchar(' ');
  35. }
  36. }
  37. if(list[a][b]==2){
  38. putchar(' ');
  39. for(int i=1;i<=size;i++)putchar(' ');
  40. putchar('|');
  41. }
  42. if(list[a][b]==3){
  43. putchar('|');
  44. for(int i=1;i<=size;i++)putchar(' ');
  45. putchar('|');
  46. }
  47. if(list[a][b]==0){
  48. putchar(' ');
  49. for(int i=1;i<=size;i++)putchar(' ');
  50. putchar(' ');
  51. }
  52. putchar(' ');//细节:说是数字前面有空格,可空格要在放后面
  53. }//枚举完成
  54. int main(){
  55. scanf("%d",&k);
  56. string str;
  57. cin >> str;
  58. for(int i=0;i<5;i++){
  59. for(int j=1;j<=(odd(i)?k:1);j++){//这个循环语句中j<=(odd(i)?k:1)相当重要,表示如果是第奇数部分输出一行(全是横线),第偶数部分输出k行(全是竖线)
  60. for(int t=0;t<str.size();t++)
  61. draw(str[t]-48,i,k);
  62. putchar('\n');
  63. }
  64. }
  65. return 0;
  66. }

FZU ICPC 2020 寒假训练 6 —— 字符串处理的更多相关文章

  1. FZU ICPC 2020 寒假训练 4 —— 模拟(一)

    P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华 ...

  2. FZU ICPC 2020 寒假训练 5 —— 排序

    P1177 [模板]快速排序 题目描述 利用快速排序算法将读入的 N 个数从小到大排序后输出.快速排序是信息学竞赛的必备算法之一.对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成. ...

  3. FZU ICPC 2020 寒假训练 4 —— 模拟(二)

    P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同 ...

  4. FZU ICPC 2020 寒假训练 3

    P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一 ...

  5. FZU ICPC 2020 寒假训练 2

    A - 排序 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若 干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由 若干个'0'组 ...

  6. FZU ICPC 2020 寒假训练 1

    B - Sum Problem In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The i ...

  7. FZU ICPC 2020 寒假阶段测试 2

    P1464 Function 题目描述 对于一个递归函数w(a,b,c)如果a≤0 or b≤0 or c≤0就返回值1.如果a>20 or b>20 or c>20就返回w(20, ...

  8. Java实现 蓝桥杯VIP 算法训练 连接字符串

    算法训练 连接字符串 时间限制:1.0s 内存限制:512.0MB 编程将两个字符串连接起来.例如country与side相连接成为countryside. 输入两行,每行一个字符串(只包含小写字母, ...

  9. Java实现 蓝桥杯VIP 算法训练 比较字符串

    算法训练 比较字符串 时间限制:1.0s 内存限制:512.0MB 编程实现两个字符串s1和s2的字典序比较.(保证每一个字符串不是另一个的前缀,且长度在100以内).若s1和s2相等,输出0:若它们 ...

随机推荐

  1. P7581-「RdOI R2」路径权值【长链剖分,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P7581 题目大意 给出\(n\)个点的有边权有根树,\(m\)次询问一个节点\(x\)的所有\(k\)级儿子两两之 ...

  2. GitHub 和 Gitee 开源免费 10 个超赞后台管理面板,看完惊呆了!

      软件工程师在实际项目开发中不可避免需要依赖一些前后端的后台管理系统框架,而不是从零开始一点点的搭建,浪费人力.目前市面上有很多开放源码.且免费的后台管理面板,样式色彩也比较丰富美观.   今天整理 ...

  3. WPF进阶技巧和实战02-布局

    窗体 无边框 窗体无边框(最大化及标题位置)WindowStyle="None" 窗体透明 AllowsTransparency="True",必须设置窗体无边 ...

  4. 基于Jetpack组件构建的开源项目-WanLearning

    「WanLearning App」基于 Material Design 风格构建的 玩 Android 客户端,主要是为了适应Kotlin语言开发流程. 主要特点 基于Google官方宣贯的MVVM模 ...

  5. [FFMpeg] 非标准分辨率视频Dump YUV注意事项

    背景 做视频编解码相关开发的过程中我们经常会遇到要把视频原始YUV数据保存下来查看的情况. 使用FFMpeg对视频解码之后原始图片数据都是保存在AVFrame这一结构中,很多时候我们都按照图像的长宽来 ...

  6. 12种 vo2dto 方法,就 BeanUtils.copyProperties 压测最拉胯!【快双11了,别用错喽】

    作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/Xq7oQg7dYESMYxHVnxX8Dw 沉淀.分享.成长,让自己和他人都能 ...

  7. MySQL5.7主从复制-异步复制搭建

     两台服务器,系统是Redhat6.5,MySQL版本是5.7.18.1.在主库上,创建复制使用的用户,并授予replication slave权限.这里创建用户repl,可以从IP为10.10.10 ...

  8. Vue自定义页面路由

    错误1:webpackEmptyContext (eval at ./src/store/modules sync recursive (0.js:10), <anonymous>:2:1 ...

  9. 在Vue&Element前端项目中,对于字典列表的显示处理

    在很多项目开发中,我们为了使用方便,一般都会封装一些自定义组件来简化界面的显示处理,例如参照字典的下拉列表显示,是我们项目中经常用到的功能之一,本篇随笔介绍在Vue&Element前端项目中如 ...

  10. 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!

    早在 2019 年,当.dev顶级域名开放时,我们赶紧注册了vscode.dev.像许多购买.dev域名的人一样,我们不知道我们将用它做啥.反正,也占个坑吧! 将 VS Code 带入浏览器 直到今天 ...