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++){
            for(int t=0;t<str.size();t++)
                draw(str[t]-48,i,k);
            putchar('\n');
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/lvhang/p/12298894.html

时间: 2024-10-09 17:38:24

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

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

P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响.在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙. 题目描述 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(

FZU ICPC 2020 寒假训练 1

B - Sum Problem In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The input will consist of a series of integers n, one integer per line. Output For each case, output SUM(n) in one line, followed by a blank line. You may

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

P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同学上课时会交头接耳.同学们在教室中坐成了 M 行 N 列,坐在第 i 行第 j 列的同学的位置是 (i,j),为了方便同学们进出,在教室中设置了 K 条横向的通道,L 条纵向的通道. 于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置

2020寒假训练记录

目标: 信息学奥赛之数学一本通重学 第一章 数论 第三章 组合数学 第四章 概率 第六章 矩阵 网络流 DP 多项式 生成函数 CFdiv1 30题 整理模板 2020-01-10 添加模板: 辛普森积分 中国剩余定理 矩阵乘法 提交:POJ1006 原文地址:https://www.cnblogs.com/FYH-SSGSS/p/12177888.html

蓝桥 算法训练 比较字符串

算法训练 比较字符串 Description 编程实现两个字符串s1和s2的字典序比较.(保证每一个字符串不是另一个的前缀,且长度在100以内).若s1和s2相等,输出0:若它们不相等,则指出其第一个不同字符的ASCII码的差值:如果s1>s2,则差值为正:如果s1<s2,则差值为负. Input 输入描述: 输入样例: java basic Output 输出描述: 输出样例: 8 Hint HINT:时间限制:1.0s 内存限制:512.0MB Source 蓝桥杯练习系统 ID: 170

NUC-ACM/ICPC 寒假训练 简单DP A - G题

第一题:数塔 HDU - 2084 做法: 从第 i , j 个 节点往下走的最优解可以由从第 i+1,j 个节点往下走的最优解和第i+1,j+1个节点往下走的最优解得出,二者取其优即可. 代码: 记忆化搜素 1 #include<iostream> 2 using namespace std; 3 #include<cstdio> 4 using namespace std; 5 int n; 6 int f[100][100]; 7 int v[100][100]; 8 int

2020 寒假记录(一)

2020 冬 寒假记录(一) 费解的开关 https://vijos.org/p/1197 当第 \(i\) 行的状态确定了之后,只有第 \(i+1\) 行可以影响它,也就是翻完第一行后,后面每一行的操作也就是确定的了,所以枚举第一行的32种状态即可. 深搜 #include <iostream> #include <algorithm> #include <cstdio> using namespace std; int dir[4][2] = { {0,-1},{0

窦小凤2020寒假学习心得

2020年1-2月寒假学习心得—窦小凤 一.学习成果 赛事准备上,每天坚持做题,完成代码量6000行(其中还包括了很多知识点学习上的代码). 学习python基础,对python有了基本认识,完成代码1500行(但其中基本都是python中的基础语法) 选择性学习了一些用Java语言讲的数据结构与算法. 前期主要是将Java的基础视频重看了一遍(主要是在学校的时候没认真),然后从最基础入门开始做起,到寒假末来看,自身在Java方面跟在大一上学期还是有较大进步,但仍还有很长的路要走. Python

FJUT2017寒假训练二题解

A题 题意:让你找出唯一的一个四位数,满足对话时的要求. 思路:因为是4位数,可以直接从1000-9999遍历一遍,判断是否有唯一的数能满足所有条件,如果不是唯一的或者没有满足条件的数就输出Not sure.特别丑的代码附上... 1 #include<stdio.h> 2 int a[10000],b[10000],c[10000]; 3 int main() 4 { 5 int n; 6 while(~scanf("%d",&n)) 7 { 8 if(n==0)