藍橋杯2018年省賽——c組純C編寫答案(部分)

標題:哪天返回

小明被不明勢力劫持。後莫名其妙被扔到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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章