hpuoj 1725: 感恩节KK专场——特殊的比赛日期 【素数判断】【校赛】

来源:互联网 发布:linux git 编辑:程序博客网 时间:2024/05/13 14:57

1725: 感恩节KK专场——特殊的比赛日期

时间限制: 1 Sec  内存限制: 128 MB
提交: 393  解决: 100
[提交][状态][讨论版]

题目描述

KK今天参加河南理工大学ACM程序设计竞赛,他发现今天是11月29号,刚好11和29都是素数(只能被1和自己本身整除的数叫做素数),于是他想知道今年(2015年)的某天之前(不含当天)一共有多少天是月份和天数都是素数。

输入

第一行输入一个整数t(1<t<366),代表t组测试数据。

接下来每行输入一个日期,仅包含(月份和天数),格式形如(yy-dd)。

输入时保证日期全部属于合法日期。

输出

输入yy-dd天之前有多少天的日期同时满足yy和dd同时为素数。

样例输入

32-22-52-15

样例输出

026

提示

来源

KK


思路:

        对31个数进行打表,然后判断月,判断天!


代码:

#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>using namespace std;int a[32];int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){memset(a,0,sizeof(a));for(int i=2;i<=31;i++){int j;for(j=2;j<=sqrt(1.0*i);j++){if(i%j==0){break;}}if(j>sqrt(1.0*i)){a[i]=1;}}int T;scanf("%d",&T);while(T--){int y,d;scanf("%d-%d",&y,&d);int sum=0;for(int i=1;i<y;i++){if(a[i]){for(int j=1;j<=b[i];j++){if(a[j]){sum++;}}}}if(a[y])for(int i=1;i<d;i++){if(a[i]){sum++;}}printf("%d\n",sum);}return 0;}


0 0
原创粉丝点击