选择题2013蓝桥杯

题目标题: 高斯日记

大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

高斯出生于:1777年4月30日。

在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

高斯获得博士学位的那天日记上标着:8113   

请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
1.代码如下
2.可以直接用计算机计算。

#include<stdio.h>

int main()
{
    
    
    int  f[40]={
    
    31,28,31,30,31,30,31,31,30,31,30,31};
    int a=0,num,year,month,day;
    scanf("%d/%d/%d %d",&year,&month,&day,&num);
    num+=day;
    day=1;
    
    if(year%4==0&&year%100!=0||year%400==0)
    f[1]=29;
    for(month,a=0;month>1;month--)
    {
    
    
    num+=f[a];
    a++;
    }
    
    for(num;num>=365;)
    {
    
    
    if(year%4==0&&year%100!=0||year%400==0)
    {
    
    num-=366;
    year++;}
    else
    {
    
    num-=365;
    year++;}
    }
    
    if((year%4==0&&year%100!=0)||year%400==0)
    f[1]=29;
    for(a=0;num-f[a]>0;a++)
    {
    
    
    num-=f[a];
    month++;
    }
    
    printf("%d/%d/%d",year,month,num-1);
    return 0;
    }

2.标题: 马虎的算式

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?

他却给抄成了:396 x 45 = ?

但结果却很戏剧性,他的答案竟然是对的!!

因为 36 * 495 = 396 * 45 = 17820

类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?

请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

答案直接通过浏览器提交。
注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

#include<stdio.h>
#include<string.h>
int n[10],d=0;
int main()
{
    
    
	int a5,num=0;
	for(int a=1;a<10;a++)
	for(int b=1;b<10;b++)
	for(int c=1;c<10;c++)
	for(int d=1;d<10;d++)
	for(int e=1;e<10;e++)
	{
    
    
		
		if(((a*10+b)*(c*100+d*10+e))==((a*100+d*10+b)*(c*10+e))) 
		{
    
       
			n[a]++,n[b]++,n[c]++,n[d]++,n[e]++;
			for(a5=1;a5<=10;a5++)
			{
    
    
			   if(n[a5]>1)
			   break;	
			}
			if(a5>9)
			{
    
    
				num++;printf("%d %d% d %d %d\n",a,b,c,d,e);
			}
			
			memset(n,0,sizeof(n));
		}
	}
	printf("%d",num);
	return 0;
}
5for循环暴力到底

题目标题: 第39级台阶

小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?


请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。

递推
#include<stdio.h>
int main()
{
    
    
	int a,b,c,d;
	int n[40][10];
	n[1][1]=1;
	n[1][2]=0;
	n[2][1]=1;
	n[2][2]=1;
	for(int k=3;k<=39;k++)
	{
    
    
		n[k][1]=n[k-1][2]+n[k-2][2];
		n[k][2]=n[k-1][1]+n[k-2][1];
	}
	printf("%d",n[39][2]);
	return 0;
 } 
dfs暴力搜索
#include<stdio.h>
int sum;
void dfs(int n,int k)//k为走的步数。、、n为台阶数
{
    
    
    if(n>39) return;//结束条件
    if(n==39&&k%2==0)//j结束条件
    {
    
    
        sum++;
        return;
    }
    dfs(n+1,k+1);//寻找
    dfs(n+2,k+1);
}
int main()
{
    
    
    sum=0;
    dfs(0,0);
    printf("%d",sum);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_52425315/article/details/112724126