2013 蓝桥杯B 组省赛(1-----6)

第一题

​​​​​​​​​​​​​​​​​​​​​

这是第一道填空题,比较水 ,方法有两种,第一种是Excel的方法,但是我Excel并不好,不太会用,第二种方法是枚举的方法,需要考虑好每一种情况。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool isPrimeyear(int y)
{
  return (y%4==0&&y%100!=0)||(y%400==0);
}
int main()
{
  int y=1777;
  int m=4;
  int d=30;
  for(int i=0;i<8112;i++)
  {
    d++;
    if(m==12&&d==32)
    {
      y++;
      m=1;
      d=1;
      continue;
    }
    if((m==1||m==3||m==5||m==7||m==8||m==10)&&d==32)
    {
      m++;
      d=1;
      continue;
    }
    if((m==4||m==6||m==9||m==11)&&d==31)
    {
      m++;
      d=1;
      continue;
    }
    if(m==2&&isPrimeyear(y)&&d==30)
    {
      m++;
      d=1;
      continue;
    }
    if(m==2&&!isPrimeyear(y)&&d==29)
    {
      m++;
      d=1;
      continue;
    }
    //cout<<y<<" "<<m<<" "<<d<<endl;
  }
  cout<<y<<" "<<m<<" "<<d<<endl;
  return 0;
}

运行结果为1799-7-16.

第二题

这道题也是枚举的应用。 

//有一次,老师出的题目是:36 x 495 = ?
//他却给抄成了:396 x 45 = ?
// 但结果却很戏剧性,他的答案竟然是对的!!
// 因为 36 * 495 = 396 * 45 = 17820
//假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,
// 且不含0)能满足形如:
// ab * cde = adb * ce 这样的算式一共有多少种呢?
//请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
//满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
  int cnt=0;
  for(int a=1;a<10;a++)
  {
    for(int b=1;b<10;b++)
    {
      if(b!=a)
       for(int c=1;c<10;c++)
       {
         if(c!=b&&c!=a)
           for(int d=1;d<10;d++)
           {
            if(d!=c&&d!=b&&d!=a)
              for(int e=1;e<10;e++)
              {
                if(e!=d&&e!=c&&e!=b&&e!=a)
                {
                  if((a*10+b)*(c*100+d*10+e)==
                  (a*100+d*10+b)*(c*10+e))
                  {
                    cnt++;
                  }
                }
              }
          }
       }
    }
    //cout<<cnt<<endl;
  }
    cout<<cnt<<endl;
  return 0;
}

第三题 39级台阶

题目标题: 第39级台阶

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

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

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


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

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

这道题我们很容易想到斐波那契数列这种问题。这就是所谓的相似问题推测现有问题,我们可以去掉一个条件,偶数步,最后进行判断就可以, 所以函数中可以定义两个变量,n代表剩下的阶梯数,step代表已走的步数。

//如果我每一步只能迈上1个或2个台阶。
//先迈左脚,然后左右交替,最后一步是迈右脚,
//也就是说一共要走偶数步。那么,上完39级台阶,
//有多少种不同的上法呢?
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int ans;
void Fib(int n,int step)//n代表剩下的阶梯数目
//step代表已走的步数
{
  if(n<0)
     return;
  if(n==0&&step%2==0)
  {
    ans++;
  }
  Fib(n-1,step+1);
  Fib(n-2,step+1);
}
int main()
{
  ans=0;
  Fib(39,0);//2^39
  cout<<ans<<endl;
  return 0;
}

最后得到的结果非常大,是51167078,因为他需要进行2^39次运算。所以复杂度很高,可以通过dp进行优化剪枝。但由于填空,没有考虑太多。

第五题 前缀判断
 

    如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL。

    比如:"abcd1234" 就包含了 "abc" 为前缀

char* prefix(char* haystack_start, char* needle_start)
{
    char* haystack = haystack_start;
    char* needle = needle_start;

    
    while(*haystack && *needle){
        if(______________________________) return NULL;  //填空位置
    }
    
    if(*needle) return NULL;
    
    return haystack_start;
}


请分析代码逻辑,并推测划线处的代码,通过网页提交。
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

这道题就是字符串类型的题,首先明白每句的含义。注意  haystack 是母串,needle 是子串。while语句的含义是指如果这两个字符串均不为空,按照正常情况,needle前缀长度是小于haystack长度的,ifneedle更长,,母串越出,while语句里面的何时返回NULL,如果heystack当前字符不等于needle当前字符,则返回所以括号里面的内容为移动指针并判断。

   while(*haystack && *needle){
        if(*(heystack++)!=*(needle++)) return NULL;  //填空位置
    }

当然可以自己测试一下。

第六题
标题:三部排序

 

    一般的排序有许多经典算法,如快速排序、希尔排序等。

    但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

    比如,对一个整型数组中的数字进行分类排序:

    使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!

    以下的程序实现了该目标。

    其中x指向待排序的整型数组,len是数组的长度。

void sort3p(int* x, int len)
{
    int p = 0;
    int left = 0;
    int right = len-1;
    
    while(p<=right){
        if(x[p]<0){
            int t = x[left];
            x[left] = x[p];
            x[p] = t;
            left++;
            p++;
        }
        else if(x[p]>0){
            int t = x[right];
            x[right] = x[p];
            x[p] = t;
            right--;            
        }
        else{
            __________________________;  //填空位置
        }
    }
    
}

   如果给定数组:
   25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
   则排序后为:
   -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25
    


请分析代码逻辑,并推测划线处的代码,通过网页提交
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

这道题实际上就是快速排序的一个变形,它和快速排序的原理,选择一个基准值,比基准值大的放在右边,比基准值小的放在左边。

这道题他的思想就是双指针法的一个应用。 空白处需要填写的是    p++;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值