2019-02-15 PAT 甲级 1056-1059刷题感受
题目 | 分值 | 得分 |
---|---|---|
1152 | 20 | 20 |
1153 | 25 | 0 |
1154 | 25 | 0 |
1155 | 30 | 0 |
总分 | 100 | 20 |
相当失败的一下午,1153一道25分的题,懒懒洋洋的敲下来,花费了一个小时,对于STL的不熟悉,很吃亏啊。看懂题目了,时间上把握不住。emmm可怕。在刷一下STL。
1152 20分 / 20分
普通题目,寻找素数。考虑超时问题sqrt
作为边界。还有2
是素数的情况。数字长度为10
,采用long int
更保险一些吧。
#include <iostream>
#include <math.h>
using namespace std;
char str[1230];
long int date;
int sit;
long int getValue(int i, int m)
{
sit = 0;
date = 0;
for(int j = i; j < i+m ; j++)
{
date *= 10;
date += str[j] - '0';
if(date==0)
sit++;
}
return date;
}
bool ifBool(long int date)
{
for(int i = 2; i <=(int)sqrt(date); i++)
{
if(date%i==0)
return false;
}
return true;
}
int main()
{
int n, m;
scanf("%d %d", &n, &m);
scanf("%s", str);
bool flag;
for(int i = 0; i <= n-m; i++)
{
date = getValue(i,m);
flag = ifBool(date);
if(flag == true)
break;
}
while(sit!=0)
{
printf("0");
sit--;
}
if(flag == true)
printf("%ld\n", date);
else
printf("404\n");
return 0;
}
1153 25分 / 0分
理解题目含义,能够敲出来。不熟悉STL太太太吃亏了,手动用C语言实现,简直浪费时间。不可取,不可取,心累。有些部分用整数保存,方便比较,在输出的时候考录到%.3d
来左边补充0空位就可以了。都是老师以前讲过的知识点。学STL。
1154 25分 / 0分
并没有看题。
1155 30分 / 30分
并没有看题。