题目一、jobdu1163:素数

http://ac.jobdu.com/problem.php?pid=1163

题目描述:

输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。

输入:

输入有多组数据。
每组一行,输入n。

输出:

输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。

样例输入:
100
样例输出:
11 31 41 61 71

题目分析:

打表输出。

AC代码:

<span style="font-size:18px;">/***快速求出素数,输出时判断个位是否是1*/
#include<iostream>
using namespace std;
int a[10005]={0};
int main()
{for(int i=2;i<=10000;i++){if(a[i]==0) for(int j=i*i;j<=10000;j+=i){a[j]=1;}}int n;while(cin>>n){int ok=0,k=1;for(int i=1;i<n;i++){if(i!=1&&a[i]==0&&i%10==1){ok=1;//1~n之间存在满足条件的素数if(k) {cout<<i; k=0;}//控制空格else cout<<" "<<i;}}if(ok==0) cout<<"-1";cout<<endl;}return 0;
}
</span>

题目二、jobdu1164:旋转矩阵

http://ac.jobdu.com/problem.php?pid=1164

题目描述:

任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。

输入:

输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。

输出:

判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。

如果旋转角度的结果有多个,则输出最小的那个。

样例输入:
3
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
样例输出:
90

题目分析:

每次旋转进行比较,成功则输出,继续下次输入。旋转的时候,注意下标的关系。

AC代码:

<span style="font-size:18px;">/***@xiaoran*模拟,分析下标之间的关系,当然要是有时间也可以直接模拟旋转*旋转90度后,a[i][j]=a[j][n-1-i];旋转180度相当于旋转90两次*/
#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<cstdlib>
#include<cctype>
#include<cmath>
#define LL long long
using namespace std;
int a[10][10];
int c[10][10];
void Zhuan(int n){int b[10][10];for(int i=0;i<n;i++){for(int j=0;j<n;j++){b[j][n-i-1]=a[i][j];}}memcpy(a,b,sizeof(b));//b数组赋值到a中
}
int Judge(int n){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(c[i][j]!=a[i][j]) return 0;}}return 1;
}int main()
{int n;while(cin>>n){for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>c[i][j];}}if(Judge(n)){cout<<"0"<<endl;continue;}Zhuan(n);if(Judge(n)){cout<<"90"<<endl;continue;}Zhuan(n);if(Judge(n)){cout<<"180"<<endl;continue;}Zhuan(n);if(Judge(n)){cout<<"270"<<endl;continue;}cout<<"-1"<<endl;}return 0;
}
</span>

题目三、jobdu1165:字符串匹配

http://ac.jobdu.com/problem.php?pid=1165

题目描述:

读入数据string[ ],然后读入一个短字符串。要求查找string[ ]中和短字符串的所有匹配,输出行号、匹配字符串。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。

输入:

输入有多组数据。
每组数据第一行输入n(1<=n<=1000),从第二行开始输入n个字符串(不含空格),接下来输入一个匹配字符串。

输出:

输出匹配到的字符串的行号和该字符串(匹配时不区分大小写)。

样例输入:
4
Aab
a2B
ab
ABB
a[a2b]b
样例输出:
1 Aab
2 a2B
4 ABB

题目分析:

分段模拟,同时从前到后和从后到前进行比较,遇到’[‘和‘]’的时候,在进行特判是否成功。感觉北航的字符串提多的而且不区分大小写,大家注意了。

AC代码:

<span style="font-size:18px;">#include<iostream>
#include<string>
#include<algorithm>
#include<cctype>
using namespace std;
string s[1005],ss[1005];
int main()
{int n;while(cin>>n){string s1;for(int i=0;i<n;i++){cin>>s[i];ss[i]=s[i];for(int j=0;j<s[i].size();j++){if(isalpha(s[i][j])) s[i][j]=tolower(s[i][j]);}}cin>>s1;int k=1,ok=0;for(int i=0;i<s1.size();i++){//得到模式串的长度,不包含中括号里的字符if(s1[i]=='[') ok=1;else if(s1[i]==']') ok=0;else if(ok==0) k++;}//cout<<k<<endl;int k1,k2,ok1,ok2,j1,j2;for(int i=0;i<n;i++){if(s[i].size()!=k) continue;k2=s[i].size()-1;//前后同时匹配j1=0,j2=s1.size()-1;//前后同时匹配ok=ok1=ok2=1;while(ok1||ok2){//没有遇到前后括号/**cout<<s[i][j1]<<" "<<s1[j1]<<endl;cout<<s[i][k2]<<" "<<s1[j2]<<endl;**/if(s1[j1]=='[') ok1=0;if(s1[j2]==']') ok2=0;if(s[i][j1]!=s1[j1]&&s1[j1]!='['){ok=0;}else{if(ok1) j1++;}if(s[i][k2]!=s1[j2]&&s1[j2]!=']'){ok=0;}else{if(ok2){k2--; j2--;}}}/**cout<<ok<<endl;cout<<j1<<" "<<j2<<endl;**/if(ok==1) for(int j=j1+1;j<j2;j++){if(s[i][j1]==s1[j]){cout<<i+1<<" "<<ss[i]<<endl;break;}}}}return 0;
}
</span>

九度OJ北京航空航天大学2008机试题题解相关推荐

  1. Freckles - 九度 OJ 1144

    Freckles - 九度 OJ 1144 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: In an episode of the Dick Van Dyke show, l ...

  2. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  3. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  4. 非常可乐(九度 OJ 1457)

    非常可乐(九度 OJ 1457) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 1.题目描述: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为.因为每次当 see ...

  5. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  6. 九度OJ——1028继续畅通工程

    题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修 ...

  7. Leagal or Not - 九度 OJ 1448

    Leagal or Not - 九度 OJ 1448 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: ACM-DIY is a large QQ group where man ...

  8. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  9. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

最新文章

  1. 第十篇学会编写python代码_Python之路,第十篇:Python入门与基础10
  2. Boost signals(1) 基本介绍
  3. 【Alertmanager】腾讯企业邮箱配置
  4. 监视Rails进程内存泄漏的技巧
  5. 《软件项目管理(第二版)》第 10 章——项目收尾 重点部分总结
  6. DetNAS:首个搜索物体检测Backbone的方法 | NeurIPS 2019
  7. 用 HTML5 和 Javascript 仿制一个水果忍者网页版! (直接浏览器在线玩+源代码下载)...
  8. Linux进程线程学习笔记
  9. 2D游戏知识点三、Unity生成Android手机apk程序
  10. c#/.net操作word插入表格实例
  11. 公差基本偏差代号_基本偏差代号怎么确定
  12. 20164305徐广皓 - Exp1 PC平台逆向破解(5)M
  13. Python新手-记一次股权穿透层级打分(森林实现)
  14. Python:import与from import的理解
  15. adb不是内部或外部命令,也不是可运行的程序或批处理文件
  16. 30天自制OS学习笔记 (四)C语言与画面显示的练习
  17. HDU 4545 (模拟) 魔法串
  18. 使用memmove/memcpy库函数拷贝内存时容易产生的异常
  19. 亚马逊 CTO 预测2021:八大技术趋势改变世界
  20. 如何从微信跳到外部浏览器进行apk文件(app)下载如何解决

热门文章

  1. 公差分析中曲率半径公差与光圈的换算
  2. 网络电视测试软件,电视屏幕检测(三款智能电视屏幕检测软件)
  3. 超详细零信任市场解读
  4. UltraISO 9安装教程
  5. Java中的IO流与Properties
  6. 二进制LDPC码的构造及译码算法
  7. 编码理论第十一章:LDPC码原理学习及其习题分析
  8. linux服务器怎么搭建简单的网站?linux搭建网站教程
  9. 如何扎实的学好ABAP?我的个人经验
  10. 项目风险管理十大黄金法则!高质量项目管理必杀技!