NOIP2019普及组复赛试题及解答

发布 2024-04-16 13:55:06 阅读 6432

ccf 全国信息学奥林匹克联赛(noip2012) 复赛。

普及组。1.题目概况。

二.提交源程序文件名。

三.编译命令(不包含任何优化开关)

四.运行内存限制。

注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、c/c++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。

3、全国统一评测时采用的机器配置为:cpu intel core2 quad q8200 2.33ghz,内存 2g,上述时限以此配置为准。

4、特别提醒:评测在 noi linux 下进行。

问题描述】1.质因数分解。

已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。

输入】输入文件名为 输入只有一行,包含一个正整数 n。

输出】输出文件名为 输出只有一行,包含一个正整数 p,即较大的那个质数。

输入输出样例】

数据范围】对于 60%的数据,6 ≤ n ≤ 1000。 对于 100%的数据,6 ≤ n ≤ 2*109。

解题思路] 1.根据数据范围,可以判断数据范围为长整型(long=4 bytes)

补充数据类型:

整型 char 1byte

int 4bytes

short 2bytes

long 4bytes long long 8bytes

程序:#include <>

#include <>

#include <>

int a[44722]=;用于筛选法求素数,有题目数据范围可知,涉及到的最大素数一定小于44722 int b[10000]=;用于存储素数,b[i]用于存储第i+1个素数。

int count=0;

void calculateprime(void) /筛选法求素数,主要考虑到时间效率,所以用此法求素数。

int i,j;

memset(a,-1,sizeof(a));

memset(b,0,sizeof(b));

a[0]=a[1]=0;

for (i=2;i<50000;i++)

if (a[i]==1)

for (j=i+i;j<50000;j+=i)

a[j]=0;

for (i=2;i<50000;i++)

if (a[i]==1)

b[count++]i;

int main(void)

int i,n,squre,temp; file *inputfp; file *outputfp;

calculateprime();

inputfp=fopen(""r");outputfp=fopen(""w");

while (fscanf(inputfp,"%d",&n)!=eof)

printf("%d",n); squre=(int)sqrt(n);

for (i=0;i<=squre&&i{

if (n%b[i]==0) /核心:两个素数的积一定为合适,且只有3个因子。

temp=n/b[i]; break;

fprintf(outputfp,"%d",temp);

fclose(inputfp); fclose(outputfp);

return 0;

NOIP2019普及组模拟试题

说明 1 文件名 程序名和输入输出文件名 必使用小写。2 程序存放 先建汉字姓名 就是一般的考试号 文件夹,然后在这个文件夹内分别建程序名文件夹,把相应编好的的程序文件放入其中,打包汉字姓名文件夹上交邮箱评测。1 骰子 dice pas c cpp 题目描述 让我们一起来看下 一个放在桌面上的骰子,...

NOIP2019复赛模拟练习卷 一

1.序列 问题描述 有一个整数序列,它的每个数各不相同,我们不知道它的长度 即序列中的整数个数 是多少,但我们知道,在某些区间中至少有多少个整数,用区间 li,ri,ci 来描述,表示这个整数序列中至少有ci个数来自区间 li,ri 给定若干个这样的区间,问这个整数序列的长度最少能为多少?输入 第1...

NOIP2019模拟试题

一 防护伞 prevent 题目描述 据说2012的灾难和太阳黑子的爆发有关。于是地球防卫小队决定制造一个特殊防护伞,挡住太阳黑子爆发的区域,减少其对地球的影响。由于太阳相对于地球来说实在是太大了,我们可以把太阳表面看作一个平面,中心定为 0,0 根据科学家的情报,在2012年时,太阳表面上产生n个...