ZOJ 3883 Scan Code
来源:互联网 发布:tensorflow 版本 编辑:程序博客网 时间:2024/05/16 23:48
Edward is writing an editor. After he wrote the function to get input from his special keyboard, he found that what he got is scan code, instead of ASCII code. He is very busy, so he gives you the easy task, translate the scan code to a string.
The scan code is very simple, when you press a key, the keyboard will send a make code of this key to computer (if you press the key for a long time, keyboard will send the make code to computer many times), and when you release a key, the keyboard will send a brake code of this key to computer. When computer received a make code, a character or function for the key will do on the editor (Caps Lock is off at the beginning) excepted the Caps Lock key (do the function when press the key).
Input
Input will consist of multiple test cases.
Each case has one line, the scan code received from keyboard in Hex (scan code table is at Hint section), the length is less than or equal to 1000000.
Input's validation is guaranteed.
Output
For each case, output the string on the editor and put a newline at the end.
Sample input
16F0161216F016F01216F0161612F016F012
Sample output
1!11
http://en.wikipedia.org/wiki/Scancode
Here is the scan code table:
差不多模拟键盘输入输出
#include <stdio.h>#include <string.h>#include <map>#include <string>#include <iostream>using namespace std;char up[54][20]={ "~","!","@","#","$","%","^","&","*","(",")","_","+","Backspace", "Tab","Q","W","E","R","T","Y","U","I","O","P","{","}","|", "Caps","A","S","D","F","G","H","J","K","L",":","\"","Enter", "LShift","Z","X","C","V","B","N","M","<",">","?","RShift","Space"};char down[54][20]={ "`","1","2","3","4","5","6","7","8","9","0","-","=","Backspace", "Tab","q","w","e","r","t","y","u","i","o","p","[","]","\\", "Caps","a","s","d","f","g","h","j","k","l",";","'","Enter", "LShift","z","x","c","v","b","n","m",",",".","/","RShift","Space"};string Value[54]={ "0E","16","1E","26","23","2E","36","3D","3E","46","22","4E","55","66","0D","15","1D","24", "2C","2D","35","3C","43","44","4D","54","5B","5D","58","1C","1B","25","2B","33","34","3B", "42","4B","4C","52","5A","12","1A","45","29","2A","32","31","3A","41","49","4A","59","21"};map<string,int>num;char ans[1000005],in[1000005];int main(){ for(int i=0; i<54; i++) num[Value[i]]=i; while(~scanf("%s",in)) { int l=strlen(in); int ed,shL,shR,cap,cpp; ed=0; shL=shR=cap=cpp=0; for(int i=0; i<l; i+=2) { string c=""; c+=in[i]; c+=in[i+1]; if(c=="F0") { i+=2; string cc=""; cc+=in[i]; cc+=in[i+1]; int k=num[cc]; string ccc=up[k]; if(ccc=="RShift"||ccc=="LShift") { if(ccc=="LShift") shL=0; else if(ccc=="RShift") shR=0; } else if(ccc=="Caps") cpp=0; } else { int k=num[c]; string ccc=up[k]; if(ccc=="Backspace") { if(ed>0) ed--; } else if(ccc=="Enter") { ans[ed++]='\n'; } else if(ccc=="Space") { ans[ed++]=' '; } else if(ccc=="Tab") { ans[ed++]='\t'; } else if(ccc=="LShift"||ccc=="RShift") { if(ccc=="LShift") shL++; if(ccc=="RShift") shR++; } else if(ccc=="Caps") { if(cpp==0) cap=cap^1; cpp=1; } else { if(down[k][0]<='z'&&down[k][0]>='a') { int sh=(shL!=0)||(shR!=0); if((sh&&cap)||(sh==0&&cap==0)) { ans[ed++]=down[k][0]; } else { ans[ed++]=up[k][0]; } } else { int sh=(shL!=0)||(shR!=0); if(sh==0) { ans[ed++]=down[k][0]; } else { ans[ed++]=up[k][0]; } } } } } ans[ed]=0; cout<<ans<<endl; } return 0;}
- ZOJ 3883 Scan Code
- ZOJ 3883Scan Code 模拟
- [ZOJ 3883] Scan Code 劳民伤财+劳神+并不科学的一个 模拟题
- key code and scan code
- keyboard scan code 表
- keyboard scan code 表
- Keyboard BIOS Scan Code/ASCII code tables
- USB HID to PS2 Scan Code
- WP8.1 Scan QR Code(Universal App)
- scan code到keycode的转换过程
- zoj 2851 Code Formatter
- 01-K Code ZOJ
- zoj 3494 BCD Code
- zoj 3494 BCD Code
- ZOJ 2238 Code
- zoj 2851 Code Formatter
- ZOJ 2851Code Formatter
- ZOJ 2851 Code Formatter
- 排序(1)冒泡排序
- 黑马程序员—Java基础:初识Java
- session的产生方式
- POJ 3204 Ikki's Story I - Road Reconstruction(最小割+残余网络)
- Android proguard 详解(三)
- ZOJ 3883 Scan Code
- 同样是工作,为什么成功的是他们?
- 动态规划之走格子不经过点P
- SpringMVC+MyBatis - 12 spring mvc4返回的json日期为Long的解决方案
- 归并排序
- iOS 第三方分享
- Shell命令——文件内容
- playframework 一步一步来 之 IDE
- Android知识点4-popupwindow的使用