【OI】WERTYU UVa 10082
题目:
A common typing error is to place the hands on the keyboard one row to the right of the correct position. So ‘Q’ is typed as ‘W’ and ‘J’ is typed as ‘K’ and so on. You are to decode a message typed in this manner.
Input
Input consists of several lines of text. Each line may contain digits, spaces, upper case letters (except Q, A, Z), or punctuation shown above [except back-quote (‘)]. Keys labelled with words [Tab, BackSp, Control, etc.] are not represented in the input.
Output
You are to replace each letter or punction symbol by the one immediately to its left on the ‘QWERTY’ keyboard shown above. Spaces in the input should be echoed in the output.
Sample Input
O S, GOMR YPFSU/
Sample Output
I AM FINE TODAY.
此题的关键就在于如何确定给定字符在键盘上的左边一个字符是什么。可以用30个if但是太烦了。这里涉及到一个常量数组。将键盘上的字符按照行顺序写进一个数组,这样用数组的下标可以访问左边的字符。
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
但是这给循环搜索造成了麻烦。字符数组的最后一个一定是空字符,用这个判断数组结束。
for (i=1;s[i];i++); //这里不需要考虑i=0,这种情况被题设排除
于是顺便将条件一起解决了
for (i=1;s[i] && c == s[i];i++);
最后输出,如果i不是s数组的最后一个,就直接替换为s[i-1],否则就输出c(就是空格了)
if(s[i]) putchar(s[i-1]);
else putchar(c);
照例,本题使用逐个读取。
while ((c = getchar()) != EOF){…………} //考虑到可能有空格的出现
解:
#include <stdio.h> int main()
{
int c,i;
char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
while ((c = getchar()) != EOF)
{
for (i=1;s[i] && s[i] != c;i++);
if (s[i]) putchar(s[i-1]);
else putchar(c);
}
return 0;
}
https://vjudge.net/problem/UVA-10082(UVa太慢)
【OI】WERTYU UVa 10082的更多相关文章
- 【OI】计算分子量 Molar mass UVa 1586 题解
题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只 ...
- 【OI】Tex Quotes——UVa 272
题目: TEX is a typesetting language developed by Donald Knuth. It takes source text together with a fe ...
- 【暑假】[数学]UVa 1262 Password
UVa 1262 Password 题目: Password Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld ...
- 【暑假】[数学]UVa 10375 Choose and divide
UVa 10375 Choose and divide 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19601 思路 ...
- 【题解】Inspection UVa 1440 LA 4597 NEERC 2009
题目传送门:https://vjudge.net/problem/UVA-1440 看上去很像DAG的最小路径覆盖QwQ? 反正我是写了一个上下界网络流,建模方法清晰易懂. 建立源$s$,向每个原图中 ...
- 【OI】关于快速幂的简单理解
都知道算某个数的幂需要线性的复杂度,为了优化复杂度,就出现了所谓的快速幂. 快速幂的代码很短,但是要原理需要一点心思. 首先,我们知道, a^b = a^c * a^d (c+d=b) 那么,不就可以 ...
- 【OI】线性筛
如何查找一个范围内的所有素数? 可以是从1~n挨个判断n%i 是否 == 0,也可以从 1~sqr(n) 一个个判断. 相信你们也听说过埃氏筛法,是使用每一个数的倍数筛掉合数!但是!每一个合数要被筛多 ...
- 【OI】指针线段树&指针
对于线段树,我们一般需要n*4的空间去存储线段树,然后有一种玄学操作是用指针来实现线段树. #include <inttypes.h> #include <algorithm> ...
- 【OI】单调队列
所谓单调队列,就是一个保持着某种性质的队列,通常是队列从队头到队尾,维护一种递增递减的关系. 这种队列通常用来解决一些连续区间的最值问题. 这种队列的入队要保证符合当前的性质,例如一个递增的单调序列( ...
随机推荐
- 如何在idea中配置Tomcat服务器
.IDEA 中动态 web 工程的操作 a)IDEA 中如何创建动态 web 工程 1.创建一个新模块: 2.选择你要创建什么类型的模块 3.输入你的模块名,点击[Fin ...
- VueApp 自动更新解决plus is not defined问题
一,今天用VueApp 做自动更新调用按照网上列子直接 Plus 打包编译后出现了plus is not defined 发现需要引用document.addEventListener("p ...
- Python语言系列-04-高阶函数
闭包 #!/usr/bin/env python3 # author:Alnk(李成果) # 什么是闭包 # 1,闭包存在于函数中 # 2,闭包就是内层函数对外层函数(非全局变量)的引用 # 3,最内 ...
- 计算机网络:基于iptalbes的SANT和DNAT|docker的服务器发布项目--超详细一看就会
项目说明: 模拟企业让内网服务器可以上网,同时发布内网的服务器 1.实验环 我们需要准备三台linux系统,一台作为路由器机route,其它为客户机client-1.client-2 主机改名 ho ...
- 安鸾CTF Writeup wordpress 01
题目一: wordpress 01 URL:http://whalwl.site:8041/ wordpress 站思路就是先用wpscan 进行扫描检测一遍. wpscan 使用方法可以参考两篇文章 ...
- efcore分表下"完美"实现
ShardingCore 如何呈现"完美"分表 这篇文章是我针对efcore的分表的简单介绍,如果您有以下需求那么可以自己选择是否使用本框架,本框架将一直持续更新下去,并且免费开源 ...
- SQL 练习4
查询不存在" 01 "课程但存在" 02 "课程的情况 SELECT * from sc WHERE cid = '02' AND sid not in (SE ...
- NOIP 模拟 $25\; \rm queen$
题解 \(by\;zj\varphi\) 这是一道纯分类讨论,然后推式子的题,细节挺多,挺麻烦,但是很考验数学能力 不讲了,官方题解给的很清楚 Code: %: pragma GCC optimize ...
- Golang在Linux系统中实现微秒级延迟
在程序中延迟或者等待一段时间一般可以使用Sleep函数实现,但是因为操作系统线程调度的消耗,往往只能做到十几或者数十毫秒的精度,很难达到微秒级,Golang的time.Sleep也是如此. Sleep ...
- ASP.NET Core教程:ASP.NET Core中使用Redis缓存
参考网址:https://www.cnblogs.com/dotnet261010/p/12033624.html 一.前言 我们这里以StackExchange.Redis为例,讲解如何在ASP.N ...