Java教程

pat乙级刷题第七天(1013.1014)

本文主要是介绍pat乙级刷题第七天(1013.1014),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1013 数素数 (20 分)

令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 PM​ 到 PN​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

思路:这题简单!首先将从1到n之间的所有素数都存入数组p里,然后再按题目中给出的输出条件输出从m到n之间的素数就行啦~

#include<bits/stdc++.h>
using namespace std;

//判断素数 
int prime(int n){
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0) return 0;
	}
	return 1;
}
int main(){
	int m,n;
	cin>>m>>n;
	
	int a=0,b=0,p[10000];
	for(int i=1;;i++){
		if(prime(i)){
			p[a]=i;
			a++;
		}
		if(a==(n+1)) break;
	}
	for(int i=m;i<=n;i++){
		cout<<p[i];
		b++;
		if(i==n||b%10==0) cout<<endl;
		else cout<<" ";
	}
	return 0;
} 

1014 福尔摩斯的约会 (20 分)

大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

输入格式:

输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。

输出格式:

在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。题目输入保证每个测试存在唯一解。

输入样例:

3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

输出样例:

THU 14:04

思路:这题只需按需要输出的结果来一个一个的求就行了。第一个值是day,我是先判断第一个字符串和第二个字符串第一个相同的大写字母是什么,然后利用ascll码的差值求得该字母在字母表中的位置,那个真正需要输出的day值我是放在后面根据那个字母的位置输出对应的星期数;第二个是时间中的小时,因为它会有数字和字符两种,所以我们就得先区分是数字还是字母,然后我在这里就用了一个函数isdigit,是用来判断这个字符否是数字的,之后就按条件给小时赋值就行了;最后一个是时间中的分,我这里用了一个isalpha函数,用来判断这个字符是否是字母的,之后就和第二个一样赋值。最后按要求输出结果就行啦~

#include<bits/stdc++.h>
using namespace std;
int main(){
	string a,b,c,d;
	cin>>a>>b>>c>>d;
	int dd=0,hh=0,mm=0;
	int i=0;
	
	while(i<a.length()&&i<b.length()){
		if(a[i]==b[i]&&(a[i]>='A'&&a[i]<='G')){
			dd=a[i]-'A';
			break;
		}	
		i++;
	}
	i++;
	
	while(i<a.length()&&i<b.length()){
		if(a[i]==b[i]){
			if(isdigit(a[i]))
			{
				hh=a[i]-'0';
				break;
			}
			else if(a[i]>='A'&&a[i]<='N')
			{
				hh=10+(a[i]-'A');
				break;
			}
		}
		i++;
	}
	
	i=0;
	while(i<c.length()&&i<d.length())
	{
		if(c[i]==d[i]&&isalpha(c[i]))
		{
			mm=i;
			break;
		}
		i++;
	}
	
	string day[]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
	cout<<day[dd]<<" "<<setw(2)<<setfill('0')<<hh<<":"<<setw(2)<<setfill('0')<<mm;
	return 0;
} 

这篇关于pat乙级刷题第七天(1013.1014)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!