九度OJ 题目1163:素数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2782 解决:761
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
九度OJ 题目1164:旋转矩阵
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1331 解决:497
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
九度OJ 题目1165:字符串匹配
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1331 解决:430
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
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2782 解决:761
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
#include <memory.h>
#include <iostream>
using namespace std;
int prime[320];
bool isPrime[10005];
int primeNumber( int n ){
memset( isPrime, 0, sizeof(isPrime) );
int d = 100;
int i, j;
for( i=2; i<6; i++ ){ //2,3,5
if( i%4 == 0 ) continue;
for( j=i*i; j<n; j+=i )
isPrime[j] = 1; //true表示非素数
}
for( i=7; i<=d; i+=2 ){
if( i % 3 == 0 ) continue;
if( i % 5 == 0 ) continue;
for( j=i*i; j<n; j+=i )
isPrime[j] = 1; //1表示非素数
}
for( i=2, j=0; i<n; i++ )
if( !isPrime[i] && i%10 == 1 )
prime[j++] = i;
return j;
}
int main(){
int i, j, k, l, m, n;
l = primeNumber( 10000 );
// cout << endl << "l = " << l << endl;
// cout << prime[l-1] << endl;
while( cin >> n ){
i = 0;
bool flag = 0;
while(prime[i]<n && i<l){
if( flag ) cout << " " << prime[i++];
else{
cout << prime[i++];
flag = 1;
}
}
if(!flag) cout << "-1";
cout << endl;
}
return 0;
}
九度OJ 题目1164:旋转矩阵
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1331 解决:497
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
// 1 2 3 7 4 1 9 8 7 3 6 9
// 4 5 6 8 5 2 6 5 4 2 5 8
// 7 8 9 9 6 3 3 2 1 1 4 7
#include <stdio.h>
int a[10][10], b[10][10];
int main()
{
int i, j, k, m, n;
freopen("1164.txt","r",stdin);//
while( scanf("%d",&n) == 1 ){
for( i=0; i<n; i++ )
for( j=0; j<n; j++ )
scanf("%d",&a[i][j]);
for( i=0; i<n; i++ )
for( j=0; j<n; j++ )
scanf("%d",&b[i][j]);
bool flag = 0;
if( b[0][0] == a[0][0] )
{
for( i=0; i<n; i++ ){
for( j=0; j<n; j++ )
if(a[i][j]!=b[i][j]) { flag = 1; break;}
if(flag) break;
}
if(flag) puts("-1");
else puts("0");
}
else if( b[0][n-1] == a[0][0] )
{
for( i=0; i<n; i++ ){
for( j=0; j<n; j++ )
if(a[i][j]!=b[j][n-1-i]) { flag = 1; break;}
if(flag) break;
}
if(flag) puts("-1");
else puts("90");
}
else if( b[n-1][n-1] == a[0][0] )
{
for( i=0; i<n; i++ ){
for( j=0; j<n; j++ )
if(a[i][j]!=b[n-1-i][n-1-j]) { flag = 1; break;}
if(flag) break;
}
if(flag) puts("-1");
else puts("180");
}
else if( b[n-1][0] == a[0][0] )
{
for( i=0; i<n; i++ ){
for( j=0; j<n; j++ )
if(a[i][j]!=b[n-1-j][i]) { flag = 1; break;}
if(flag) break;
}
if(flag) puts("-1");
else puts("270");
}
else puts("-1");
}
return 0;
}
九度OJ 题目1165:字符串匹配
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1331 解决:430
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
#include <string>
#include <iostream>
using namespace std;
string s[1002], S[1002], t, temp;
string upper(string str){
int i, l=str.length();
for(i=0; i<l; i++)
if(str[i]>='a'&&str[i]<='z') str[i] += ('A'-'a');
//cout << str << endl;//
return str;
}
int main()
{
int i, j, l, k, m, n;
int start, end;
freopen("1165.txt","r",stdin);//
while( cin >> n ){
for( i=1; i<=n; i++ ){
cin >> s[i];
S[i] = upper(s[i]);
}
cin >> t;
t = upper(t);
start = t.find("[");
//cout << "start = " << start << endl;
if( start == -1 ){
for( i=1; i<=n; i++ ) if( S[i]==t ) cout << i << ' ' << s[i] << endl;
}
else{
end = t.find(']');
//cout << "end = " << end << endl;
l = end - start;
string *tt = new string[l];
for(i=start+1, j=1; i<end; i++, j++){
tt[j] = t;
temp = t[i];
tt[j].replace(start,l+1,temp);
//cout << "tt["<<j<<"] = " << tt[j] << endl;
}
for( i=1; i<=n; i++ )
for( j=1; j<l; j++ )
if( S[i]==tt[j] ){ cout << i << ' ' << s[i] << endl; break; }
}
}
return 0;
}