2012蓝桥杯决赛题

来源:互联网 发布:曲靖哪里有卖网络机柜 编辑:程序博客网 时间:2024/04/28 13:57
【结果填空】 (满分5分)
1949年的国庆节(10月1日)是星期六。 
 今年(2012)的国庆节是星期一。
 那么,从建国到现在,有几次国庆节正好是星期日呢?

 只要答案,不限手段!

可以用windows日历,windows计算器,Excel公式,。。。。。

当然,也可以编程!

 不要求写出具体是哪些年,只要一个数目!

 千万不要提交源代码!
答案不要写在这里,写在“解答.txt”中
10       11       12
31       30       31
30 + 30 + 31
6 7 1 2 3 4 5
  1 2 3 4 5 6

7 8 9 10 11 

#include<iostream>using namespace std;#pragma warning(disable : 4996)int month[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int year){if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){return true;}else{return false;}}int main(){int days, ans, i, j;days = 91;ans = 0;for (i = 1950; i <= 2013; i++){if (check(i)){month[2] = 29;for (j = 1; j <= 9; j++){days += month[j];}days += 1;if(days % 7 == 1){ans++;cout << "Year = " << i << endl;}days += month[10] + month[11] + month[12] - 1;}else{month[2] = 28;for (j = 1; j <= 9; j++){days += month[j];}days += 1;if(days % 7 == 1){ans++;cout << "Year = " << i << endl;}days += month[10] + month[11] + month[12] - 1;}}cout << "ans = " << ans << endl;return 0;}
Year = 1950
Year = 1961
Year = 1967
Year = 1972
Year = 1978
Year = 1989
Year = 1995
Year = 2000
Year = 2006
ans = 9
请按任意键继续. . .




【编程题】(满分19分)
    在很多软件中,输入拼音的首写字母就可以快速定位到某个词条。比如,在铁路售票软件中,输入: “bj”就可以定位到“北京”。怎样在自己的软件中实现这个功能呢?问题的关键在于:对每个汉字必须能计算出它的拼音首字母。
    GB2312汉字编码方式中,一级汉字的3755个是按照拼音顺序排列的。我们可以利用这个特征,对常用汉字求拼音首字母。
    GB2312编码方案对每个汉字采用两个字节表示。第一个字节为区号,第二个字节为区中的偏移号。为了能与已有的ASCII编码兼容(中西文混排),区号和偏移编号都从0xA1开始.
    我们只要找到拼音a,b,c,...x,y,z 每个字母所对应的GB2312编码的第一个汉字,就可以定位所有一级汉字的拼音首字母了(不考虑多音字的情况)。下面这个表给出了前述信息。请你利用该表编写程序,求出常用汉字的拼音首字母。
a 啊 B0A1
b 芭 B0C5
c 擦 B2C1
d 搭 B4EE
e 蛾 B6EA
f 发 B7A2
g 噶 B8C1
h 哈 B9FE
j 击 BBF7
k 喀 BFA6
l 垃 C0AC
m 妈 C2E8
n 拿 C4C3
o 哦 C5B6
p 啪 C5BE
q 期 C6DA
r 然 C8BB
s 撒 C8F6
t 塌 CBFA
w 挖 CDDA
x 昔 CEF4
y 压 D1B9
z 匝 D4D1
【输入、输出格式要求】
    用户先输入一个整数n (n<100),表示接下来将有n行文本。接着输入n行中文串(每个串不超过50个汉字)。
    程序则输出n行,每行内容为用户输入的对应行的汉字的拼音首字母。
    字母间不留空格,全部使用大写字母。
    例如:
    用户输入:
3
大家爱科学
北京天安门广场
软件大赛
    则程序输出:
DJAKX
BJTAMGC
RJDS

#include <iostream>#include <string>#include <vector>using namespace std;#pragma warning(disable : 4996)vector<string>vec;vector<char>dict;void init(){vec.push_back("啊"); vec.push_back("芭"); vec.push_back("擦"); vec.push_back("搭");vec.push_back("蛾"); vec.push_back("发"); vec.push_back("噶"); vec.push_back("哈");vec.push_back("击"); vec.push_back("喀"); vec.push_back("垃"); vec.push_back("妈");vec.push_back("拿"); vec.push_back("哦"); vec.push_back("啪"); vec.push_back("期");vec.push_back("然"); vec.push_back("撒"); vec.push_back("塌"); vec.push_back("挖"); vec.push_back("昔"); vec.push_back("压"); vec.push_back("匝");dict.push_back('A'); dict.push_back('B'); dict.push_back('C'); dict.push_back('D');dict.push_back('E'); dict.push_back('F'); dict.push_back('G'); dict.push_back('H');dict.push_back('J'); dict.push_back('K'); dict.push_back('L'); dict.push_back('M');dict.push_back('N'); dict.push_back('O'); dict.push_back('P'); dict.push_back('Q');dict.push_back('R'); dict.push_back('S'); dict.push_back('T'); dict.push_back('W');dict.push_back('X'); dict.push_back('Y'); dict.push_back('Z');}void check(string word){for(int i = 0; i < vec.size() - 1; i++){if(word >= vec[i] && word < vec[i+1]){cout << dict[i];break;}}}int main(){freopen("in.txt", "r", stdin);string str, word;init();int n;cin >> n;while (n--){cin >> str;for (int i = 0; i < str.size(); i += 2){word = str.substr(i, 2);check(word);}cout << endl;}return 0;}
【编程题】(满分27分)
脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。它由4种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。这4种核苷酸可以分别记为:A、G、C、T。
DNA携带的遗传信息可以用形如:AGGTCGACTCCA.... 的串来表示。DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。
为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差):
1. 漏掉某个脱氧核苷酸。例如把 AGGT 复制成为:AGT
2. 错码,例如把 AGGT 复制成了:AGCT
3. 重码,例如把 AGGT 复制成了:AAGGT
如果某DNA串a,最少要经过 n 次出错,才能变为DNA串b,则称这两个DNA串的距离为 n。
例如:AGGTCATATTCC 与 CGGTCATATTC 的距离为 2
你的任务是:编写程序,找到两个DNA串的距离。
【输入、输出格式要求】
用户先输入整数n(n<100),表示接下来有2n行数据。
接下来输入的2n行每2行表示一组要比对的DNA。(每行数据长度<10000)
程序则输出n行,表示这n组DNA的距离。
例如:用户输入:
3
AGCTAAGGCCTT
AGCTAAGGCCT
AGCTAAGGCCTT
AGGCTAAGGCCTT
AGCTAAGGCCTT
AGCTTAAGGCTT


则程序应输出:
1
1
2
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#pragma warning(disable : 4996)using namespace std;const int MAXN = 10005;char dest[MAXN];char str[MAXN];int dp[MAXN][MAXN];int DP(int x, int y){int i, j;for(i = 0; i <= x; i++)dp[i][0] = i;for(j = 0; j <= y; j++)dp[0][j] = j;for(i = 1; i <= x; i++){for(j = 1; j <= y; j++){if(dest[i-1] == str[j-1]){dp[i][j] = dp[i-1][j-1];}else{dp[i][j] = min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1;}}}return dp[x][y];}int main(){freopen("in.txt", "r", stdin);int n;cin >> n;while (n--){cin >> dest >> str;int dest_len = strlen(dest);int str_len = strlen(str);cout << DP(dest_len,str_len) << endl;}return 0;}





原创粉丝点击