首页 > 其他分享 >PAT Basic 1114. 全素日

PAT Basic 1114. 全素日

时间:2023-04-19 19:58:41浏览次数:36  
标签:子串 输出 PAT 素日 int 素数 1114 Basic Yes

PAT Basic 1114. 全素日

1. 题目描述:

wbfg.JPG

以上图片来自新浪微博,展示了一个非常酷的“全素日”:2019年5月23日。即不仅20190523本身是个素数,它的任何以末尾数字3结尾的子串都是素数。

本题就请你写个程序判断一个给定日期是否是“全素日”。

2. 输入格式:

输入按照 yyyymmdd 的格式给出一个日期。题目保证日期在0001年1月1日到9999年12月31日之间。

3. 输出格式:

从原始日期开始,按照子串长度递减的顺序,每行首先输出一个子串和一个空格,然后输出 Yes,如果该子串对应的数字是一个素数,否则输出 No。如果这个日期是一个全素日,则在最后一行输出 All Prime!

4. 输入样例:

20190523
20191231

5. 输出样例:

20190523 Yes
0190523 Yes
190523 Yes
90523 Yes
0523 Yes
523 Yes
23 Yes
3 Yes
All Prime!
20191231 Yes
0191231 Yes
191231 Yes
91231 No
1231 Yes
231 No
31 Yes
1 No

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

主要涉及素数判断和把字符串转为相应数字,这里利用字符数组的特性传递每个子串(每次传递字符指针date+i)。定义子函数judgeDate()进行每个子串的逻辑判断,若子串对应的数字为素数则返回1,在main()函数中维护变量primeCount记录素数的个数,若最后primeCount等于8则输出All Prime!

My Code:

#include <stdio.h>

int isPrime(int num);
int judgeDate(const char *substr);

int main(void)
{
    char date[9] = "";
    int i=0;
    int primeCount = 0;
    
    scanf("%s", date);
    for(i=0; i<8; ++i)
    {
        //printf("%s\n", date+i); // output substring
        primeCount += judgeDate(date+i);
    }
    
    if(primeCount == 8) printf("All Prime!\n");
    
    return 0;
}

int isPrime(int num)
{
    int i=0; // iterator
    
    if(num <= 1) return 0; // 0 and 1 is not a prime
    for(i=2; i*i<=num; ++i)
    {
        if(num % i == 0) return 0;
    }
    
    return 1;
}

int judgeDate(const char *substr)
{
    int num=0;
    int i=0; // iterator
    
    for(i=0; substr[i]; ++i) // convert substr to number
    {
        num *= 10;
        num += substr[i]-'0';
    }
    
    if(isPrime(num))
    {
        printf("%s Yes\n", substr);
        return 1;
    }
    else
    {
        printf("%s No\n", substr);
        return 0;
    }
}

标签:子串,输出,PAT,素日,int,素数,1114,Basic,Yes
From: https://www.cnblogs.com/tacticKing/p/17334419.html

相关文章

  • PDFsam basic免费开源pdf编辑器
    PDFtk、PDFsam可以根据PDF中的信息分割合并PDF,免费版本就可以做到!由于PDFtk只提供了安装包,PDFsam有便携免安装的版本,basic免费,enhanced版本收费。https://github.com/torakiki/pdfsam/releasesPDFsam官网:(https://pdfsam.org/)基础版的下载页面:(https://pdfsam.org/download......
  • 【THM】Python Basic(Python基础)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/pythonbasics本文相关内容:使用基于网络的代码编辑器,学习Python的基础知识,并将你的知识付诸实践。Python简介在本文中,你将亲身体验并学习脚本编程语言Python,学会编程允许你创建一些安全工具以及创建脚本,这将帮助你......
  • [PLC]三菱Works3 编程CC-Link IEF Basic& 乐创Multiprog_Express编程Ethercat 总线伺
    目录总线伺服使用:WORKS3软件一、添加从站•1.浏览工具—配置文件管理—登录•2.浏览找到后缀为CSPP的配置文件(如MR-JE-C_1_zh-Hans.CSPP)•3.选中要添加的文件—右下角登录直到出现下面的对话框二.新建工程1.打开GX-WORKS3软件,创建一个新的FX5U型PLC工程2.修改P......
  • PAT Basic 1110. 区块反转
    PATBasic1110.区块反转1.题目描述:给定一个单链表 \(L\),我们将每 \(K\) 个结点看成一个区块(链表最后若不足 \(K\) 个结点,也看成一个区块),请编写程序将 \(L\) 中所有区块的链接反转。例如:给定 \(L\) 为\(1→2→3→4→5→6→7→8\),\(K\) 为3,则输出应该为\(7→8→4......
  • PAT Basic 1109. 擅长C
    PATBasic1109.擅长C1.题目描述:当你被面试官要求用C写一个“HelloWorld”时,有本事像下图显示的那样写一个出来吗?2.输入格式:输入首先给出26个英文大写字母A-Z,每个字母用一个\(7×5\)的、由C和.组成的矩阵构成。最后在一行中给出一个句子,以回车结束。句子是由......
  • maven的pom文件中<relativePath/>的作用
    在<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/><!--lookupparentfromrepository-->&l......
  • 16 Ray Tracing (Monte Carlo Path Tracing)
    关键点MonteCarloIntegrationDistributedRayTracingPathTracingRussianRoulette(RR)SamplingtheLight(puremath)1.MonteCarloIntegration蒙特卡洛积分对于没有解析式的对象,可以使用该方法求其定积分。在积分范围内随机采样一个值,作为高,使用区间长度作为宽,......
  • Plugin ‘Android WiFi ADB’ is compatible with IntelliJ IDEA only because it doe
    Plugin‘AndroidWiFiADB’iscompatiblewithIntelliJIDEAonlybecauseitdoesn’tdefineanyexplicitmoduledependenciesAndroidStudio中安装AndroidWiFiADB插件重启时报错怎么解决Plugin‘AndroidWiFiADB’iscompatiblewithIntelliJIDEAonlyb......
  • Unable to create an object of type 'NetcoremvcDbcontext'. For the different patt
    问题描述:我整个项目重新生成没有报错,但是用efcore迁移数据库命令:Add-Migrationinit就生成不了文件夹Migrations,并且报错:Unabletocreateanobjectoftype'NetcoremvcDbcontext'.Forthedifferentpatternssupportedatdesigntime,seehttps://go.microsoft.com/fwlink/......
  • PAT Basic 1107. 老鼠爱大米
    PATBasic1107.老鼠爱大米1.题目描述:翁恺老师曾经设计过一款Java挑战游戏,叫“老鼠爱大米”(或许因为他的外号叫“胖胖鼠”)。每个玩家用Java代码控制一只鼠,目标是抢吃尽可能多的大米让自己变成胖胖鼠,最胖的那只就是冠军。因为游戏时间不能太长,我们把玩家分成\(N\)组,每组......