蓝桥杯2018年省赛——c组纯C编写答案(部分)

本文介绍了蓝桥杯省赛中涉及的C语言编程问题,包括计算达到目标金额所需的天数、猴子分香蕉问题的求解、寻找幸运数的方法以及找到稍小的既约分数的策略。通过解决这些题目,展示了C语言在解决问题上的应用。
摘要由CSDN通过智能技术生成

标题:哪天返回

小明被不明势力劫持。后莫名其妙被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。
他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。 并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。

#include<stdio.h>
int main()
{
    int c=2,day=1,i=1;
	while(i<=108)
	{
		i+=c;
		c+=2;
		day++;
	}
	printf("%d",day);
	return 0;
}

标题:猴子分香蕉

5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩! 请计算一开始最少有多少个香蕉

#include<stdio.h>
int main()
{
	int i;
	for(i=6;i<9999;i++)
	{
		if((i-1)%5!=0)continue;
		int m=i;
		m-=1;   //吃掉一个
		m=m/5*4;
		if(m%5!=2)continue;
		m-=2;    //吃掉两个 
		m=m/5*4; 
		if(m%5!=3)continue;
		m-=3;    //吃掉三个 
		m=m/5*4; 
		if(m%5!=4)continue;
		m-=4;    //吃掉四个 
		m=m/5*4;
		if(m==0||m%5!=0) continue;
		printf("%d",i);
		break;
	}
	return 0;
} 

标题:第几个幸运数

到x星球旅行的游客都被发给一个整数,作为游客编号。 x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。 我们来看前10个幸运数字是: 3 5 7 9 15 21 25 27
35 45 因而第11个幸运数字是:49 小明领到了一个幸运数字
59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。

#include <stdio.h>
 int main()
{
	long long x,y,z,n=59084709587505;
	int m=0;
	for(x=1;x<=n;x=x*3)
		for(y=1;x*y<=n;y=y*5)
			for(z=1;x*y*z<=n;z=z*7)
				m++; 
	printf("%d\n",m-1);
	return 0;
}
/*找出n中所以满足条件的数字 用m来累计个数 因为1不满足所以要m-1*/ 

标题:稍小分数

回到小学---- 真分数:分子小于分母的分数 既约分数:分子分母互质,也就是说最大公约数是1 x星球数学城的入口验证方式是:
屏幕上显示一个真分数,需要你快速地找到一个比它小的既约分数,要求这个分数越大越好。 同时限定你的这个分数的分母不能超过100。

#include<stdio.h>
int gcd(int a, int b)
{
	if(b==0) return a;
	return gcd(b,a%b);	
}
int main()
{
	// 这是屏幕上显示的那个分数 a/b
	int a = 7;
	int b = 13;
	
	int m,n;
	int max_a = 0;
	int max_b = 1; 
	
	for(n=100; n>1; n--){
		for(m=n-1; m>=1; m--){
			if(m*b<a*n && gcd(m,n)==1){
				if(m*max_b>n*max_a){  
					max_a = m;
					max_b = n;
					break;
				}
			}
		}
	}
	printf("%d/%d\n", max_a,max_b);	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值