PAT (Basic Level)1030. 完美数列
来源:互联网 发布:英国工科强的大学知乎 编辑:程序博客网 时间:2024/06/05 19:49
https://www.patest.cn/contests/pat-b-practise/1030
题目描述:
给定一个正整数数列,和正整数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本来按照题目限制,我觉得应该用int就够了,为了防止出现m*p溢出的情况,我特地转成了除法问题。按理可以解决了吧,可是始终有个点过不了,改成long long或者double就过了。(骗纸………………)
#include <iostream>#include <string>#include <algorithm> #include <cmath>#include <iomanip>#include <ctype.h>using namespace std;int main(){ double num[100001],p=0; int N = 0, i = 0, j = 0, max = 0; cin >> N >> p; for (i = 0; i < N; i++) cin >> num[i]; sort(num, num + N); for (j = N - 1, i = N - 1; i >= 0 && j >= 0; j--) { int mp = ceil(num[j] / p); while (i >= 0 && num[i] >= mp) i--; if (i< 0) { if (j+1 > max) max = j + 1; break; } else if (j - i > max) max = j - i; } cout << max << endl; return 0;}
0 0
- PAT (Basic Level)1030. 完美数列
- PAT BASIC LEVEL 1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- PAT (Basic Level) Practise (中文) 1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- Pat(Basic Level)Practice--1030(完美数列)
- PAT(Basic Level) 完美数列(25)
- PAT(basic level) 1030 完美数列(25)
- PAT(Basic Level)_1030_完美数列
- PAT乙级(Basic Level)真题 >完美数列
- PAT Basic 1030. 完美数列(25)(C语言实现)
- PAT乙级(Basic Level)练习题 >NowCoder数列
- PAT乙级(Basic Level)练习题-NowCoder数列
- PAT乙级(Basic Level)练习题 NowCoder数列
- pat 1030. 完美数列
- PAT (Basic Level)1049. 数列的片段和
- PAT(basic level) 1049数列的片段和(20)
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- 整理一些java基础面试题
- iOS 图片压缩
- jvm(1)-走进java
- 通过get和post方式提交参数给web应用
- PAT (Basic Level)1030. 完美数列
- LeetCode 2016 313,264,95,224,279,275,274
- 凸函数与伪凸函数
- SSH2出现的错误解决方法
- Java多线程编程
- 蓝桥杯-身份证号码升级
- 每个Xcode开发者应该知道的七个使用技巧
- 规定元素的高度,宽度
- bzoj1083