关于void

本文介绍了一段C++程序,用于在数组中查找指定位置的第k大和第k小元素,并通过计算这两个元素之间的整数范围来判断该范围是否包含素数。程序使用了二分查找和素数判断算法,展示了C++编程技巧和数据结构应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;

long A[100010],n;
long k1,k2;

long sep(int x,int y,int k)
{
	int mid = x + (y-x)/2;
	long i = x,j = y,key = A[mid];
	A[mid] = A[x];
	while(i < j)
	{
		while(i < j && A[j] >= key)
		  j--;
		A[i] = A[j];
		while(i < j && A[i] < key)
		  i++;
		A[j] = A[i];
	}
	A[i] = key;
	if(i == k) return A[i];
	if(i > k) sep(x,i-1,k);
	else if(i < k) sep(i+1,y,k);
}

/*bool*/void prime()
{
	int m = k2 - k1;
	if(m < 2)
	{
		printf("NO\n");
		return;
	}
	else if(m == 2)
	{
		printf("YES\n");
		printf("%d\n", m);
		return ;
	}
	else if(m > 2)
	{
		for(int i = 2; i <= int(sqrt(m))+1; i++)
		  if(m%i == 0)
		  {
		  	printf("NO\n");
			printf("%d\n", m);
		  	return ;
		  }
		printf("YES\n");
		printf("%d\n", m);
		return;
	}
/*	int i;
	if(m<=1) return false;
	for(i=2; i*i<=m; i++)
	  if(m%i==0)
	    return false;
    return true;*/
}

int main()
{
	int k,i;
	cin>>n>>k;
	for(i = 1; i <= n; i++)
	  cin>>A[i];
	k1 = sep(1,n,k);
	k2 = sep(1,n,n-k+1);
	prime();
/*	int m = k2 - k1;
	if(prime())
	  printf("YES\n");
	else
	  printf("NO\n");
	printf("%d\n", m);*/
	return 0;
}



***************************************************************************************

void输出是否会有溢出?若在wikioi上,注释部分可AC,而在void函数内输出则WA


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值