2018年第九届蓝桥杯C/C++ A组第4题(用数组方法解答)

博客分享了使用C/C++通过数组方法解决2018年蓝桥杯比赛A组第4题的详细过程,适合初学者理解。通过链接可查阅更深入的原理,最终得出的答案是1905。读者可以在评论区提出疑问进行讨论。
摘要由CSDN通过智能技术生成
#include "iostream"
const int N=5000;
using namespace std;
bool judge(long long int a[],long long int num,int j);    //判断待插入的数字是否和数组之前的元素值重复,不重复则返回true 
void sort(long long int a[],int N);   //冒泡排序
int main()
{
	long long int a[N];
	a[0]=3;
	a[1]=5;
	a[2]=7;

	long long int num=59084709587505;
	int j=3;
	for(int i=0;(i<N)&&(j<N)&&i<j;i++)  
	{
			if(a[i]>59084709587505)  //数据超出范围,不用插入,并且过大会发生数据溢出
			continue;
			a[j]=(long long int)(a[i]*(long long int)3);
			if(judge(a,a[j],j))    //不重复则插入,更新j的下标
				j++;       
			
			a[j]=(long long int)(a[i]*(long long int)5);
			if(judge(a,a[j],j))
				j++;
			
			a[j]=(long long int)(a[i]*(long long int)7);
			if(judge(a,a[j],j))
				j++;
	}
	j=j-1;
	sort(a,j);
	
	for(int i=0;i<=j;i++)
	{
		cout<<a[i]<<" "<<endl;
		if(a[i]==59084709587505)
		{cout<<i+1<<endl; break;}   //数组下标起始是0,所以元素个数要加1 
	}
	return 0;
} 

bool judge(long long int a[],long long int num,int j)
{
	for(int i=0;i<j;i++)
	if(a[i]==num)
		return false;
	return true;
}
void sort(long long int a[],int N)  //冒泡排序
{
	for(int i=N;i>0;i--)
	{
		for(int j=0;j<i;j++)	
		{
			if(a[j]>a[j+1])
			{
				long long int temp=a[j];     
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}

原理可参考此篇博客https://blog.csdn.net/qq_40727168/article/details/103328390
我只是用了比较初级的数组方法求解,适合小白看懂,答案为1905。有疑问可在评论区留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值