蓝桥杯 第九届 第几个幸运数 C语言 {已输出}

这个不算是原创,我是看的关于丑数的一个题,才会了这个题(算法竞赛这本书上有),答案是我在网上看的丑数的这道题的答案,才会了这道题,基本一样


标题:第几个幸运数

到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

请你帮小明计算一下,59084709587505是第几个幸运数字。

需要提交的是一个整数,请不要填写任何多余内容。

请把下面一段文字看完

每一个数都是,另外一个数 乘以3,5,7,得到的,这个类似于丑数,

但是怎么乘呢: 先把a[0] 赋值为1, j下标从1开始,这时候求a[1]的数,是下标 j 前面所有的数组元素,

  1. 依次乘以3,求出第一个大于a[0]的元素,
  2. 依次乘以5,求出第一个大于a[0]的元素,
  3. 依次乘以7,求出第一个大于a[0]的元素,

然后将这三个数比较大小,把最小的那个数赋值为  a[j]

结束条件: 当这个数等于  59084709587505  的时候就结束,最后输出 j 就是这道题的答案,
由于不是c++,java等,数组不能动态调节大小,所以我是已经知道答案的情况下,才把数组设置成 2000的

也可以依次测试,求出来数组是多少

————————————————————————————————————————————————————————

还有一种方法就是,挨个测试这个是,从 1 开始遍历到59084709587505;测试每个数是否为 幸运数

幸运数就是,只能被3,或者5,或者7整除的数, 

  1. 如果这个数能整除3,就一直除
  2. 如果能乘除5,就一直除
  3. 如果能乘除7 就一直除

直到最后判断这个数是否等于1,如果等于就是幸运数,这个很费时间,我在电脑上跑了半个小时才跑到第九百多个
所以就不写那个了

这个其实是应该能判断从哪里开始乘以3,乘以5,乘以7,我能力有限,还不知道如何判断,这是一道填空题,答案对就行了
 

我知道一个题刚开始看的时候,可能看都看不懂,我刚开始看八皇后的时候,看了好几天都没看懂。
所以尽量能帮助就帮助,省点时间。

————————————————————————————————————————————————————————

#include<stdio.h>
long long int  min(long long int a,long long int b,long long int c)//判断最小的数
{
	int t;
	if(a > b){
		t = a;a = b;b = t;
	}
	if(a > c){
		t = a;a = c;c = t;
	}
	if(b > c){
		t = b;b = c;c = t;
	}
	return a;
}
int main()
{
	long long int a[2000] = {1};
	long long int i,j,k;
	long long int L,M,N; 
	for(j = 1;; j++)
	{
		
		for(i = 0; i < j ;i++)//依次乘以3
		{
			if((a[i] * 3 > a[j-1]))
            {
				L = a[i] * 3;
				break;
			}
			
		}
		for(i = 0; i < j ;i++)//依次乘以5
		{
			if((a[i] * 5) > a[j-1])
            {
				M = a[i] * 5;
				break;
			}
			
		}
		for(i = 0; i < j ;i++)//依次乘以7
		{
			if((a[i] * 7) > a[j-1])
            {
				N = a[i] * 7;
				break;
			}
		}
		
		L = min(L,M,N);//最小
		a[j] = L;//把最小赋值给a[j]
		
		printf("第  %6lld个,,数值:%-16lld\n",j,L);//输出,便于观察

		if(L == 59084709587505)//如果满足条件则退出
		{
			printf("\n总共%d\n",j);
			break;
		}
	}
	return 0;
}


 

猜你喜欢

转载自blog.csdn.net/weixin_42295018/article/details/88657641