2014 蓝桥杯

第一题

1.标题:啤酒和饮料

  啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。请通过浏览器提交答案。
不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。
*/#include"stdio.h"
int main()                                                                      
{
   int a,b;
   for(a=0;a<=100;a++) //饮料        
   {
    for (b=0; b <100; b++)// 啤酒  
    {     if ( 23*b+19*a ==  823)                            
  {  if ( b < a)
  printf("%d\n", b);
  }
 
  } 
   
   } 
return 0;

答案 11

第2题

题目描述

标题:切面条
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
解题思路
由于对折次数仅为10,数据规模并不大,可以通过手算简单的完成。
由于对折次数仅为10,数据规模并不大,可以通过手算简单的完成。
对折0次,得到2根;
对折1次,得到2 * 2 - 1 = 3
对折2次,得到3 * 2 - 1 = 5  
对折3次,得到5 * 2 - 1 = 9
对折4次,得到9 * 2 - 1 = 17
对折5次,得到17 * 2 - 1 = 33
对折6次,得到33 * 2 - 1 = 65
对折7次,得到65 * 2 - 1 = 129
对折8次,得到129 * 2 - 1 = 257
对折9次,得到257 * 2 - 1 = 513
对折10次,得到513 * 2 - 1 = 1025*/
//末尾式递归 
#include"stdio.h"
long long int  dfs(int n)
{    
if (n==0)
return 2;
else 
return 2*dfs(n-1)-1; 
}


int main()
{
       printf("%d",dfs(10));
return 0 ;

}

答 案 1025 

标题:李白打酒


话说大诗人李白,一生好饮。幸好他从不开车。

一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

无事街上走,提壶去打酒。
 逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 
 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

 注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。

分析 简单递归 只写出大问题的一个步骤。其他步骤由计算机重复完成并且汇聚成大问题的解法  sum标当前

   */
    
#include"stdio.h"
   char  s[14];
  void dfs( int jiu,int dian,int hua,int sum )
  {  
    if (jiu==0&& dian ==0 && hua ==0 &&s[14]== 'b')
  {  int i;
     for (i= 0;i<15;i++)
{
printf("%c",s[i]);
  }   
printf("\n");
  return ;
 }
 
  if (dian>0)
 
    s[sum ] ='a';
  dfs (jiu*2,dian-1,hua,sum+1) ;
   
 }
 
  if (hua>0)
  {
    s[sum] ='b'; 
    dfs(jiu-1,dian,hua-1,sum+1) ;
 }
 
  }
  int main()
  {
 
  dfs(2,5,10,0);
 
  return 0;

  }


2014 蓝桥杯

只要有递归 ,运用递归用计算机来层层找出答案,神奇的递归。 

5.标题:打印图形

小明在X星球的城堡中发现了如下图形和文字:
rank=3
   * 
  * * 
 *   *  
* * * *
rank=5
               *                                                      
              * *                                                     
             *   *                                                    
            * * * *                                                   
           *       *                                                  
          * *     * *                                                 
         *   *   *   *                                                
        * * * * * * * *                                               
       *               *                                              
      * *             * *                                             
     *   *           *   *                                            
    * * * *         * * * *                                           
   *       *       *       *  
  * *     * *     * *     * *  
 *   *   *   *   *   *   *   * 
* * * * * * * * * * * * * * * *  

ran=6
                               *                                      
                              * *                                     
                             *   *                                    
                            * * * *                                   
                           *       *                                  
                          * *     * *                                 
                         *   *   *   *                                
                        * * * * * * * *                               
                       *               *                              
                      * *             * *                             
                     *   *           *   *                            
                    * * * *         * * * *                           
                   *       *       *       *                          
                  * *     * *     * *     * *                         
                 *   *   *   *   *   *   *   *                        
                * * * * * * * * * * * * * * * *                       
               *                               *                      
              * *                             * *                     
             *   *                           *   *                    
            * * * *                         * * * *                   
           *       *                       *       *                  
          * *     * *                     * *     * *                 
         *   *   *   *                   *   *   *   *                
        * * * * * * * *                 * * * * * * * *               
       *               *               *               *              
      * *             * *             * *             * *             
     *   *           *   *           *   *           *   *            
    * * * *         * * * *         * * * *         * * * *           
   *       *       *       *       *       *       *       *          
  * *     * *     * *     * *     * *     * *     * *     * *         
 *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *       
   小明开动脑筋,编写了如下的程序,实现该图形的打印。
*/ 
#define N 70
void f(char a[][N], int rank, int row, int col)
{
if(rank==1)
{
a[row][col] = '*';
return;
}


int w = 1;
int i;
for(i=0; i<rank-1; i++) w *= 2;


                  //____________________________________________;
f(a, rank-1, row+w/2, col);
f(a, rank-1, row+w/2, col+w);
}




int main()
{
char a[N][N];
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++) a[i][j] = ' '; //用空格清除。 


f(a,6,0,0);  


for(i=0; i<N; i++){
for(j=0; j<N; j++) printf("%c",a[i][j]);
printf("\n");
}


return 0;
}

// 请仔细分析程序逻辑,填写缺失代码部分。

第6题

/*标题:奇怪的分式                                                                                                                                                 
    上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:
    1/4 乘以 8/5 
    小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)
    老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!
    对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?
    请写出所有不同算式的个数(包括题中举例的)。
    显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。
    但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!
注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内
题解:
暴力求解,简单模拟*/ 
#include"stdio.h"
int main()
{
int a,b,c,d;
int k=0;
for (a=1;a<10;a++)
{
for (b=1;b <10;b++)
{
for (c=1;c<10;c++)
{
for(d=1;d<10;d++)

  
 if (a*c*(b*10+d)==(a*10+c)*b*d)
 {
  if (a!=b&&c!=d)
  {
  k++;
 }
 }

}

}

}


}
printf("%d",k);
return 0;

答案 14