多益的笔试题

本文探讨了一道编程笔试题,题目要求生成五个随机数,其和为0。一种可能的解决方案是先枚举所有可能的情况,再随机选择。另一道题目涉及寻找数组中满足x的y次方大于y的x次方的数对,要求时间复杂度低于O(m×n)。通过分析和数学推导,得出在x,y大于2时,当x<y时,x的y次方通常大于y的x次方。
摘要由CSDN通过智能技术生成

第一个编程题是随机产生【-20,20】之间的5个数,使得他们的和为0;

不知道直接随机对不对,运行的时候秒出结果,好像还可以先枚举出所有满足条件的情况,然后随机一个序号解决问题

#include<iostream>
#include <vector>
#include<algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;


int myrand()
{
	//srand(unsigned(rand()%100));
	return (rand() % 41 - 20);
}
int res[5];
void getNum()//先产生四个,第五个即确定了
{
	
	int tem[5];
	int sum;
    bool flag = true;
	while(flag)
	{
		sum = 0;
		for(int i = 0;i < 4;++i)
		{
			tem[i] = myrand() ;
			sum += tem[i];
		}
		if(sum >= -20 && sum <= 20 )flag = false;
	}
	for(int i = 0;i < 4;++i)res[i] = tem[i];
	res[4] = sum * -1;
}


void getNum1()//直接产生5个
{
	bool flag = true;
	int tem[5];
	int sum;
	while(flag)
	{
		sum  = 0;
		for(int i = 0;i < 5;++i)
		{
			tem[i] = myrand();
			sum +=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值