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;
}

最新文章

  1. Android中开发工具Android Studio修改created用户(windows环境)
  2. squid-nginx 基本配置
  3. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
  4. iOS UIBezierPath知识介绍
  5. 【转】Android WebView 播放视频总结
  6. [iOS 多线程 &amp; 网络 - 2.10] - ASI框架下载文件
  7. UVaLive 6859 Points (几何,凸包)
  8. Java开源建站工具
  9. RTC 之 ARM7 2136 ARM9之2410
  10. Response.Write具体介绍
  11. Linux 下挂在ntfs 硬盘
  12. 使用maven将项目打成jar包
  13. CSU1333最短路问题SPFA
  14. Android7.0手机程序保活(附源码下载)
  15. Java日期时间,以及相互转换
  16. mongodb 初学 意外 连接服务器异常(Connection refused)
  17. MySQL Error 1215: Cannot add foreign key constraint
  18. Fiddler——PC上实现手机的抓包(转载 http://www.jianshu.com/p/13f8a81d7c7c)
  19. Ubuntu 12.04常用快捷键
  20. [php]mysqli操作流程

热门文章

  1. 解决Pycharm无法显示matplotlib绘图问题
  2. Hive语法及其进阶(二)
  3. 10.13 Nginx 负载均衡
  4. instanceof和类型转换
  5. VS 调试 提示 Lc.exe已退出 代码为-1问题解决方法
  6. 关于django配置好静态文件后打开相关图片页显示404的解决方法
  7. 【转】简述C和C++的学习历程
  8. 【Spring】IoC容器 - 依赖查找
  9. [源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎
  10. python streamlit 速成web页面,深度学习模型展示.