FZU ICPC 2020 寒假训练 6 —— 字符串处理
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很像,使用的时候也很方便:
#include <stdio.h>
#include <string.h>
#include <cstring>
#include<map>
#include<algorithm>
#include <iostream>
#include <stdio.h>
using namespace std;
map<string,int>num;
int word[100];
char str[100];
int top;
int main(){
num["one"]=1;
num["two"]=2;
num["three"]=3;
num["four"]=4;
num["five"]=5;
num["six"]=6;
num["seven"]=7;
num["eight"]=8;
num["nine"]=9;
num["ten"]=10;
num["eleven"]=11;
num["twelve"]=12;
num["thirteen"]=13;
num["fourteen"]=14;
num["fifteen"]=15;
num["sixteen"]=16;
num["seventeen"]=17;
num["eighteen"]=18;
num["nineteen"]=19;
num["twenty"]=20;
num["a"]=1;
num["both"]=2;
num["another"]=1;
num["first"]=1;
num["second"]=2;
num["third"]=3;//打表
int i;
for(i=1;i<=6;i++){
scanf("%s",str);
if(num[str]){
int sum=0;
sum=num[str]*num[str]%100;
if(!sum) continue;
word[top++]=sum;
}
}
sort(word,word+top);
printf("%d",word[0]);
for(i=1;i<top;i++){
if(word[i]<10) printf("0");
printf("%d",word[i]);
}
}
P1538 迎春舞会之数字舞蹈
题目背景
HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。
题目描述
在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。
为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是趴在地上,保证横竖。
现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。
输入格式
第一行为k。k表示要摆出数字的大小。
第二行为全部由数字组成的字符串,即要摆出的几个数字。
输出格式
按题目要求输出。
输入 #1
2
1234567890
输出 #1
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
-- -- -- -- -- -- --
| | | | | | | | | | | | |
| | | | | | | | | | | | |
-- -- -- -- -- -- --
Accepted
来源:洛谷
按输出的线分为5部分,第1、3、5部分全为横线,第2、4部分全为竖线,中间夹杂着一些空格
#include <stdio.h>
#include <string.h>
#include <cstring>
#include<algorithm>
#include <iostream>
#include <stdio.h>
using namespace std;
int list[10][5]{{1,3,0,3,1},{0,2,0,2,0},{1,2,1,1,1},
{1,2,1,2,1},{0,3,1,2,0},{1,1,1,2,1},{1,1,1,3,1},
{1,2,0,2,0},{1,3,1,3,1},{1,3,1,2,1}};;//第一维是要输出的数字,第二维对应着第几部分
/*
上面的二维数组list就是编码表
list[i][j]表示数字i第j+1部分对应的编码(注意,是第j+1部分!)
这里我们分两种情况讨论
1:j为偶数
j为偶数时,我们的编码只有2种,1和0.
1表示横线,0表示空
2:j为奇数
j为奇数时,我们的编码有3种,0、1、2、3.
1表示左边有竖线,0表示空,2表示右边有竖线,3表示左边和右边都有竖线
*/
int k;
bool odd(int x){return x%2;}//判断奇数
void draw(int a,int b,int size){//绘制数字的函数
if(list[a][b]==1){
if(!odd(b)){
putchar(' ');
for(int i=1;i<=size;i++) putchar('-');
putchar(' ');
}
else{
putchar('|');
for(int i=1;i<=size;i++)putchar(' ');
putchar(' ');
}
}
if(list[a][b]==2){
putchar(' ');
for(int i=1;i<=size;i++)putchar(' ');
putchar('|');
}
if(list[a][b]==3){
putchar('|');
for(int i=1;i<=size;i++)putchar(' ');
putchar('|');
}
if(list[a][b]==0){
putchar(' ');
for(int i=1;i<=size;i++)putchar(' ');
putchar(' ');
}
putchar(' ');//细节:说是数字前面有空格,可空格要在放后面
}//枚举完成
int main(){
scanf("%d",&k);
string str;
cin >> str;
for(int i=0;i<5;i++){
for(int j=1;j<=(odd(i)?k:1);j++){//这个循环语句中j<=(odd(i)?k:1)相当重要,表示如果是第奇数部分输出一行(全是横线),第偶数部分输出k行(全是竖线)
for(int t=0;t<str.size();t++)
draw(str[t]-48,i,k);
putchar('\n');
}
}
return 0;
}
FZU ICPC 2020 寒假训练 6 —— 字符串处理的更多相关文章
- FZU ICPC 2020 寒假训练 4 —— 模拟(一)
P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华 ...
- FZU ICPC 2020 寒假训练 5 —— 排序
P1177 [模板]快速排序 题目描述 利用快速排序算法将读入的 N 个数从小到大排序后输出.快速排序是信息学竞赛的必备算法之一.对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成. ...
- FZU ICPC 2020 寒假训练 4 —— 模拟(二)
P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同 ...
- FZU ICPC 2020 寒假训练 3
P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一 ...
- FZU ICPC 2020 寒假训练 2
A - 排序 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若 干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由 若干个'0'组 ...
- FZU ICPC 2020 寒假训练 1
B - Sum Problem In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The i ...
- 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, ...
- Java实现 蓝桥杯VIP 算法训练 连接字符串
算法训练 连接字符串 时间限制:1.0s 内存限制:512.0MB 编程将两个字符串连接起来.例如country与side相连接成为countryside. 输入两行,每行一个字符串(只包含小写字母, ...
- Java实现 蓝桥杯VIP 算法训练 比较字符串
算法训练 比较字符串 时间限制:1.0s 内存限制:512.0MB 编程实现两个字符串s1和s2的字典序比较.(保证每一个字符串不是另一个的前缀,且长度在100以内).若s1和s2相等,输出0:若它们 ...
随机推荐
- java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
说明 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 写完了客户端和服务端,那么如何实现客户端和服务端的 ...
- SPA测试
1.生产端:环境准备为了进行SPA测试,在生产数据库中创建了SPA测试专用用户,避免与其他用户相互混淆与可能产生的误操作. CREATE USER SPA IDENTIFIED BY SPA DEFA ...
- oracle数据导入"HIST_GRAM_LIST_ITEM"问题处理
1.问题显示 处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT ORA-39083: 对象类型 REF_CONSTRAINT 创建失败, 出现错 ...
- SpringBoot使用注解进行分页
分页使用可以说非常普遍了,有时候会需要非常灵活的方式去开启或关闭分页,尝试使用一下注解的方式来进行分页. 依赖安装 需要使用的依赖: Mybatis-Plus PageHelper SpringBoo ...
- CF468C Hack it! 超详细解答
CF468C Hack it! 超详细解答 构造+数学推导 原文极简体验 CF468C Hack it! 题目简化: 令\(f(x)\)表示\(x\)在十进制下各位数字之和 给定一整数\(a\)构造\ ...
- Ubuntu安装 配置GCC和Vim
VMware14.0和Ubuntu镜像安装 https://mp.weixin.qq.com/s/045wrbdv92PkUQn2abddvA 适应屏幕设置 按照下列流程检查虚拟机设置 查看 -> ...
- windows右键菜单自动打包发布nuget,没有CI/CD一样方便!
构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法.没有CI/CD?来试试使用windows右键菜单吧 先看右键效果图 有时候我们可能没有CI/CD ...
- 脚本注入3(blind)
布尔盲注适用于任何情况回显都不变的情况. (由此,可以看出,回显啥的其实都不重要,最重要的是判断注入点.只要找到注入点了,其他的都是浮云.) 在操作上,时间盲注还稍微简单一点:它不需要像布尔盲注那样, ...
- SLAM名词介绍
gauge freedom:测量自由度 degrees-of-freedom(DoF) 自由度 wide-baseline matches:宽基线匹配 宽基线匹配:从描绘同一场景的两个或多个图像中建立 ...
- 2021.8.3考试总结[NOIP模拟29]
T1 最长不下降子序列 数据范围$1e18$很不妙,但模数$d$只有$150$,考虑从这里突破. 计算的式子是个二次函数,结果只与上一个值有关,而模$d$情况下值最多只有$150$个,就证明序列会出现 ...