|
Posted on 2011-08-27 03:07 Uriel 阅读(284) 评论(0) 编辑 收藏 引用 所属分类: 考研&保研复试上机题
这套两道题。。第二道难度可以。。 1. 手机键盘 这题竟然木有图片。。还得找来手机对照。。题目本身木有难度。。
//2008年清华大学计算机研究生机试题 手机键盘

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

 int a[] = {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4};
 int t[] = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8};
char s[110];

 int main() {
int i, ans;
 while(gets(s) != NULL) {
ans = 0;
 for(i = 0; s[i]; ++i) {
if(!i) ans += a[s[i] - 'a'];
 else {
ans += a[s[i] - 'a'] + 2 * (t[s[i] - 'a'] == t[s[i - 1] - 'a']);
}
}
printf("%d\n", ans);
}
return 0;
}2. 进制转换 这题木有给范围。。一开始也没往那方面想, 总以为是输出的大小写不对。。结果WA到哭。。还无耻的上小号乱刷。。主号的AC率从77跌至60+。。 想到可能要用大数之后。。又用JAVA偷懒了。。结果果断主号和小号垫底。。 膜拜此题用C写900+B的大牛 8.27: 膜拜完大牛代码。。果然巧妙。。下次再不偷懒用JAVA了。。
//2008年清华大学计算机研究生机试题 进制转换

import java.math.*;
import java.util.*;

 public class Main {
 public static void main(String args[]) {
int m, n, i, l, k;
String ss;
char r[] = new char[1000];
char s[] = new char[1000];
BigInteger cnt;
Scanner cin = new Scanner(System.in);
 while(cin.hasNext()) {
m = cin.nextInt();
n = cin.nextInt();
ss = cin.next();
l = ss.length();
s = ss.toCharArray();
cnt = BigInteger.ZERO;
 for(i = 0; i < l; ++i) {
cnt = cnt.multiply(BigInteger.valueOf(m));
if(s[i] >= 'A' && s[i] <= 'Z') cnt = cnt.add(BigInteger.valueOf(s[i] - 'A' + 10));
else if(s[i] >= 'a' && s[i] <= 'z') cnt = cnt.add(BigInteger.valueOf(s[i] - 'a' + 10));
else if(s[i] >= '0' && s[i] <= '9') cnt = cnt.add(BigInteger.valueOf(s[i] - '0'));
}
k = 0;
 if(cnt.compareTo(BigInteger.ZERO) == 0) {
System.out.println("0");
}
 else {
 while(cnt.compareTo(BigInteger.ZERO) > 0) {
int tp = (cnt.mod(BigInteger.valueOf(n))).intValue();
if(tp < 10) r[k] = (char)(tp + '0');
else
r[k] = (char)(tp + 'a' - 10);
++k;
cnt = cnt.divide(BigInteger.valueOf(n));
}
for(i = k - 1; i >= 0; --i) System.out.print(r[i]);
System.out.println("");
}
}
}
}
|