栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【AcWing】暑假每日一题2022(本文章会持续更新至每日一题结束)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【AcWing】暑假每日一题2022(本文章会持续更新至每日一题结束)

每日一题
      • 6.10 AcWing 4268. 性感素数
      • 6.11 校庆

6.10 AcWing 4268. 性感素数

“性感素数 ”是指形如 (p,p+6) 这样的一对素数。
之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。
现给定一个整数,请你判断其是否为一个性感素数。
输入格式
输入在一行中给出一个正整数 N。
输出格式
若 N 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 N 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。
若 N 不是性感素数,则在一行中输出 No,然后在第二行输出大于 N 的最小性感素数。
数据范围
1 ≤ N ≤ 1 0 8 1≤N≤10^8 1≤N≤108

题解:
写一个 O ( n ) O( sqrt n) O(n ​)的质数判定。

bool prime(int n){
	if(n<=1) return 0;
	else{
		for(int i=2;i<=sqrt(n);i++){
			if(n%i==0)  return 0;
		}
	}
	return 1;
}

接下来就模拟就行了,有 n + 6 n+6 n+6和 n − 6 n-6 n−6两种情况。
第一问直接输出 y e s yes yes,第二问枚举到 1 e 8 1e8 1e8都不会爆炸。
AC代码

#include
using namespace std;
bool primes(int n){
    if(n<=1) return 0;
    else{
        for(int i=2;i<=sqrt(n);i++){
            if(n%i==0) return 0;
        }
    }
    return 1;
}

int main(){
    int n;
    scanf("%d",&n);
    if(primes(n)==1&&(primes(n+6)==1||primes(n-6)==1)){
        cout<<"Yes"<
            cout<
            cout<
        cout<<"No"<
        if(primes(i)&&primes(i-6)){
            cout<
            cout< 
6.11 校庆 

2019 年浙江大学将要庆祝成立 122 周年。
为了准备校庆,校友会收集了所有校友的身份证号。
现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友。
输入格式
输入在第一行给出正整数 N。
随后 N 行,每行给出一位校友的身份证号(18 位由数字和大写字母 X 组成的字符串)。题目保证身份证号不重复。
随后给出前来参加校庆的所有人士的信息:
首先是一个正整数 M。
随后 M 行,每行给出一位人士的身份证号。题目保证身份证号不重复。
输出格式
首先在第一行输出参加校庆的校友的人数。
然后在第二行输出最年长的校友的身份证号 —— 注意身份证第 7−14 位给出的是 yyyymmdd 格式的生日。
如果没有校友来,则在第二行输出最年长的来宾的身份证号。题目保证这样的校友或来宾必是唯一的。
数据范围
1 ≤ N , M ≤ 1 0 5 1≤N,M≤10^5 1≤N,M≤105

题解:
这个题时间限制0.8s。。奇怪。。只能用unordered_map才卡的过去的题。
其实拿到这道题,脑子里只能有两个关键词“去重+去除子串”
那么我们的立刻就想到了 m a p 和 s u b s t r map和substr map和substr函数。
先在输入学生的身份证号时给对应的 m a p map map赋值,之后我们可以进行判断。
我们开一个 M a t e Mate Mate字符串和 G u e s t Guest Guest字符串来存储学生的身份证和来宾的身份证号。每次取出子串对其进行更新就行了。

#include
using namespace std;
int cnt=0;
int main(){
    int n,m;
    string s;
    unordered_map mp;
    scanf("%d",&n);
    while(n--){
        cin>>s;
        mp[s]=1;
    }
    scanf("%d",&m);
    string Mate="99999999999999999X";
    string Guest="99999999999999999X";
    while(m--){
        cin>>s;
        if(mp[s]){
            cnt++;
            if(Mate.substr(6,13)>s.substr(6,13)){
                Mate=s;
            }
        }
        else{
            if(Guest.substr(6,13)>s.substr(6,13)){
                Guest=s;
            }
        }
    }
    printf("%dn",cnt);
    if(cnt) cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号