PAT1030 完美数列
来源:互联网 发布:燕十八mysql优化 编辑:程序博客网 时间:2024/06/08 09:22
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入格式:
输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。
输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
输入样例:10 82 3 20 4 5 1 6 7 8 9输出样例:
8
本题是最后一道大题,最后的AC代码只有30多行,用到了快速排序,对大数组定义的一些细节考察,节省运行时间的一些技巧都有涉及,是一道比较综合的题目。
#include<stdio.h>#include<string.h>#include<stdlib.h>int cmp(const void* a,const void* b){ return *(double *) a>*(double *) b?1:-1;}int main(){ int n,p; scanf("%d%d",&n,&p); double a[100000]; //double的精度更高,取值范围更大,其实也可以用全局变量的long long, long long 和double的区别在下文已写出 double temp; for(int i = 0;i<n;i++) { scanf("%lf",&a[i]); } qsort(a,n,sizeof(double),cmp); //用快排将输入数组的数字从小到大排序 int i = 0,j = 0,count = 0,max = 0; //count是每次j开始的地方,max就是最大个数 for(;i<n;i++) //最小数从a[0]开始一直更新 { temp = a[i] * p; for(j=count;j<n;j++) { if(temp < a[j]) //j从count开始到数组结尾,遇到大于temp的数就break break; if(j-i+1 > max) // j-i+1就是这次循环用到的数的个数,如果大于max,则将max更新 max = j-i+1; } count = j; //因为前一个temp肯定大于等于a[j]之前的数,所有不必每次从第一个数开始判断. } printf("%d",max);}
double是计算机使用的一种数据类型。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。
double在计算机中的存储方法:无论是单精度还是双精度在存储中都分为三个部分:
符号位(Sign) : 0代表正,1代表为负
指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
尾数部分(Mantissa):尾数部分
正是它不同于long long的存储方法,使得它虽然只有64位但是可以比同样是64位的long long 类型取值范围大很多。
long long
64位的范围应该是[-2^63 ,2^63],既-9223372036854775808~9223372036854775807。
它的存储方法就是按位存储。有符号位就有一位符号位,没有符号位就64位全部来存储这个数。
- PAT1030 完美数列(25)
- PAT1030完美数列(25)
- PAT1030完美数列
- PAT1030 完美数列
- pat1030完美数列bug总结,
- Python实现PAT1030 完美数列
- pat1030
- PAT1030
- PAT1030
- 完美数列
- 完美数列
- 完美数列
- 1030 完美数列
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列(25)
- 1030. 完美数列
- 1030. 完美数列(25)
- NYOJ 201 作业题
- java retain all 。 retain 保留
- Android使用Mp4v2用h264流和aac流合成mp4
- android源码设计模式解析与实战 笔记 8.6节
- Java学习之3DES加解密
- PAT1030 完美数列
- jquery和js如何判断checkbox是否选中
- build报错Failed to Crunch File
- 动态配置模块实现模块拖拽效果
- 动态计算字符串的区域大小
- Uva-10271 Chopsticks(DP)
- 吃草公司框架(Ofbiz框架的二次开发)的增删查改功能总结
- Framework的启动过程
- go语言正则表达式regexp