题目一、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代码:
/**
*快速求出素数,输出时判断个位是否是1
*/
#include
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
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代码:
/**
*@xiaoran
*模拟,分析下标之间的关系,当然要是有时间也可以直接模拟旋转
*旋转90度后,a[i][j]=a[j][n-1-i];旋转180度相当于旋转90两次
*/
#include
#include
#include
题目三、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代码:
#include
#include
#include
#include
using namespace std;
string s[1005],ss[1005];
int main()
{
int n;
while(cin>>n){
string s1;
for(int i=0;i>s[i];
ss[i]=s[i];
for(int j=0;j>s1;
int k=1,ok=0;
for(int i=0;i