首页 > 其他分享 >PAT乙级 1030 完美数列 测试点3.4

PAT乙级 1030 完美数列 测试点3.4

时间:2024-09-06 17:51:57浏览次数:13  
标签:PAT 测试点 max 最小 long 变大 3.4 num include

一、题目

二、代码

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(long long a, long long b) {
	return a < b;
}
int main() {
	long long n, p;
	cin >> n >> p;
	long long num = 0, temp = 0;
	vector<long long>v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	//从小到大排序
	sort(v.begin(), v.end());
	if (n == 1) {
		num = 1;
	}
	for (long long i =0; i <n; i++) {
		for (long long j = i+num; j <n; j++) {
			if (v[j] <= p * v[i]) {
				temp = j - i + 1;
				if (temp > num)
                {num = temp;}
            }else {
					break;
				}
		}
	}
	cout << num;
}

三、分析

读题分析: 

数字的值可能特别大,10^9和10^5之内,都是正整数

找最大最小,满足M<=mp

猜测规律:

假设数字为1 2 3 4 5 6 7 8,p=2

最小为1,最大为8,当不满足M<=mp时,最小变大/最大变小

判断正误方法
最大为8,8不变,最小变大
8<=2*11变大
8<=2*22变大
8<=2*33变大
8<=2*4数字为4 5 6 7 8
最大变小为7,最小变大
7<=2*17变小,1变大
7<=2*22变大
7<=2*33变小
7<=2*4数字为4 5 6 7

所以,要找到最大和最小数字,最小变大,直到满足条件——>找到最大,最大/p(有小数进一位),找到最接近的数为满足条件的最小数

即8/2=4,最接近4的为4,最小数为4,输出4-8之间的个数;

20/8=2,有余数就加1,找最接近(2+1)的数为3,3-20中间有8个数字。

 测试用例和正确结果:

1.                  2.

测试点3:(一个数字)

测试点4:(超时)

初始num和temp都=0

四、如果没有重复数字就正确的代码:

#include <iostream>
#include<vector>
using namespace std;
int main() {
	long long n, p;
	cin >> n >> p;
	vector<long long>v(n);
	long long max = 0;//找到最大
	long long min;//记录最小
	for (int i = 0; i < n; i++) {
		cin >> v[i];
		if (v[i] >= max)max = v[i];
	}
	//得到最小数
	if (max % p != 0) {
		min = max / p + 1;
	}
	else {
		min = max / p;
	}
	//记录数量
	long long num = 0;
	for (int i = 0; i < n; i++) {
		if (v[i] >= min&&v[i]<=max) {
			num++;
		}
	}
	cout << num;
}

当时测试点4错了,

都说4时双层循环超时,可是我只用单层循环,从0到n,25ms感觉没超时

然后发现了问题,可能出现重复的数字

即:

10 8

25 20 8 7 6 5 3 3 3 1

输出为6,但是正确结果为8

所以改代码!!!!!!!

标签:PAT,测试点,max,最小,long,变大,3.4,num,include
From: https://blog.csdn.net/hhhsyyy/article/details/141960209

相关文章

  • Patlibc———更快捷的更换libc
    起初是为了简化做pwn题目时,来回更换libc的麻烦,为了简化命令,弄了一个小脚本,可以加入到/usr/local/bin中,当作一个快捷指令......
  • 策略模式【Strategy Pattern】,什么是策略模式?核心思想?角色?优缺点?应用场景?略模式实现案
    目录设计模式专栏目录(点击进入…)策略模式【StrategyPattern】,什么是策略模式?核心思想?角色?优缺点?应用场景?略模式实现案例?目录什么是策略模式?策略模式核心思想策略模式的角色(1)策略接口(Strategy)(2)具体策略类(ConcreteStrategy)(3)上下文类(Context)策略模式的优缺点优点(1)......
  • Postman请求参数:Query、Path、Body 详解
    Postman作为一个功能强大的工具,极大地简化了API测试和调试的过程,提供了发送请求和检查响应的直接方法。本文将着重介绍如何在Postman中高效地处理请求参数,以提高API测试和开发的便利性。1、解析请求参数首先,我们需要明白什么是请求参数。简单来说,请求参数是传递......
  • How to use Node.js to get all files full paths that nested in folders All In On
    HowtouseNode.jstogetallfilesfullpathsthatnestedinfoldersAllInOne如何使用Node.js获取文件夹中嵌套的所有文件的完整路径demosESM//❌//importfsfrom'node:fs/promises';//✅import*asfsfrom'node:fs/promises';//import*asfsf......
  • 洛谷 P2860 Redundant Paths G
    洛谷P2860RedundantPathsG题意给定一张图,求最少添加几条边使得原图变为边双连通图。思路先将原图进行边双连通分量缩点,因为已经边双连通的子图我们不用考虑。缩点后会得到一棵树,每一条边都是桥。假定有\(k\)个叶子节点。我们可以把叶子节点两个两个配对连边形成环,这样......
  • [Python图论]在用图nx.shortest_path求解最短路径时,节点之间有多条边edge,会如何处理?
    问:在使用图求最短路径时,如果节点之间有多条路径,shortest_route=nx.shortest_path(G,source=start_node,target=end_node,weight='length')会如何处理,会自动选择最短那条吗?#输出图G各节点之间有多少条边edge,并给出其长度Edgesbetween103928and25508583:共2条Edge......
  • Java NIO 的 Files Path 和 Paths
    小文同学,一目千行看完java.nio.filepackage后,颇有感慨,写下鲁迅千古名句:“希望是本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。”......
  • CSP-J初赛知识点总复习( 3.3链式栈 3.4链式队列3.5链表习题)
    链式栈:(代码)#include<bits/stdc++.h>usingnamespacestd;//栈元素structStack{intdata;structStack*next;};Stack*top=NULL;//栈顶指针//入栈voidpush(intx){Stack*p=newStack;p->data=x;p->next=top;top=p;//修......
  • 2024 秋季PAT认证甲级(题解A1-A4)
    2024秋季PAT认证甲级(题解A-D)写在前面这一次PAT甲级应该是最近几次最简单的一次了,3个小时的比赛差不多30分钟就ak了(也是拿下了整场比赛的rk1),下面是题解报告,每个题目差不多都是20-30行代码,难度在洛谷普及组左右(cf1000-1200分)A.A-1HappyPatting题目描述The"HappyPatti......
  • 解决auditwheel repair过程rpath被修改的问题
    问题背景AuditWheel是一个用于修复Python的whl包的工具,例如在这个CyFES开源库中,因为使用到了Cython和CUDA编译动态链接库的技术,方便Python调用。但是在编译CUDA算子时如果使用到了运行时库,那么在第一步构建whl包的时候不会自动包含运行时库,而第二步使用auditwheel进行whl包修复的......