• 蓝桥杯 第一次三月份校训


    这次训练只做了两道签到题,自信心非常受打击,但是痛定思痛,还是先把这次校训中典型的签到题奉上,从一点一滴开始做起叭;

    1.

    题目描述

    学校附近有个一元店超市,生意火爆,小P学习之余在该超市里做收银员,超市经常要找10元、5元和1元面值的零钱给顾客,但小P经常在找零钱的时候算错帐,于是小P想自己写个程序来自动计算找零钱。输入一个整数代表找零钱的金额,程序计算并输出,需要10元、5元和1元面值的钱币各几张,注意保证总张数最少。

    输入

    一个整数,代表找零金额

    输出

    三个整数,空格隔开,分别表示10元、5元、1元纸币的张数。

    看到这道题首先想到的是枚举,但很快被题目要求中的保证总张数最少绊住了,于是想用数组来储存张数,但显然过于繁琐放弃。后来想到张数最少不就是保证大面额的张数最多就ok了?过分沙雕导致的浪费时间,暴漏做题太少的问题。

    代码实现:

     1 #include<stdio.h>
     2 int  main()
     3 {
     4     int a,n,b,c;
     5      
     6     scanf("%d",&n);
     7     a=n/10;
     8     b=n%10/5;
     9     c=n%10%5;
    10     printf("%d %d %d
    ",a,b,c);
    11      
    12     return 0;
    13 }

     2.

    题目描述
    终于到达考场的小P忘了自己坐在那里了,但他想起自己的座位号是第K个bofinacci数
    马上就要考试了,请你帮助他求出他的座位号
    设bi表示第i个bofinacci数,则b1=b2=1,对于i≥3有bi=(b2i−2+bi−1∗(i−1))%i
    输入
    一个整数K (K≤1000000)
    输出
    一个整数表示小P的座位号
    这道题乍一看跟之前那个什么数列很相似,本来编写了一个函数就是死活过不去,后来没办法了不能用函数了,就放到主函数里了,后来算b3的时候忘记初始化b1,b2了,浪费了很长时间,刚好时运不济赶上电脑编译器不能调试了,蒙着提交好几次。
    代码实现:
     1 #include<stdio.h>
     2 long int a[1000001];
     3 int main()
     4 {
     5     long int k;
     6     int i=3;
     7     scanf("%ld",&k);
     8     a[1]=a[2]=1;
     9     if(k<=2)
    10     {
    11             printf("1");
    12             return 0;
    13     }
    14     while(k>2)
    15     {
    16         a[i]=(a[i-2]*a[i-2]+a[i-1]*(i-1))%i;
    17         k--;
    18         i++;
    19     }
    20     printf("%ld",a[i-1]);
    21     return 0;
    22 }

    3.

    题目描述

    小P对自己的母校很有感情,他看到一个字符串的时候,总是看一看字符串中的字母能不能组成他母校名字的英文缩写,现给定一个仅由英文字母构成的字符串。请你帮小P找一找能组成几个学校名字的英文缩写。字母不区分大小写。

    输入

    第一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

    第二行为小P学校名字的英文缩写,名字缩写长度不超过10。

    输出
    输出一个整数,表示字符串中包含学校名字缩写的个数。
    这道题神坑,刚开始没有发现规律,也不知道在想什么,后来发现他就是在变相的数字目啊,刚好之前做过这种题目,但自己老分不清排序和找出最小值,是自己的锅自己背。
     1 #include<stdio.h>
     2 #include<string.h>
     3 char s1[10001],s2[10];
     4 int a[26]={0},b[26]={0};
     5 int main()
     6 {
     7  int i,j;
     8  char ch;
     9  gets(s1);
    10  gets(s2);
    11  
    12  for(i=0;i<strlen(s1);i++)
    13  {  ch=s1[i];
    14      if(ch>='A'&&ch<='Z')
    15      ch=ch+32;
    16      if(ch>='a'&&ch<='z')
    17      a[ch-'a']++;
    18      //a[i]的值就代表第几个字母的个数; 
    19  }
    20  
    21  
    22 for(i=0;i<strlen(s2);i++)
    23  {  ch=s2[i];
    24      if(ch>='A'&&ch<='Z')
    25      ch=ch+32;
    26      if(ch>='a'&&ch<='z')
    27      b[ch-'a']++;
    28      //b[i]的值就代表第几个字母的个数; 
    29  }
    30  
    31  int min=99999; 
    32  for(i=0;i<26;i++)
    33  {
    34  if(b[i]!=0&&a[i]/b[i]<min)
    35      min=a[i]/b[i];
    36 }
    37 
    38 printf("%d
    ",min);
    39  
    40  
    41  return 0;
    42  
    43 } 

    到此为止签到题就没有啦,后面的大佬题待我研究研究再上传。

    -

  • 相关阅读:
    TCP三次握手和四次挥手
    shell脚本进阶
    shell脚本编程基础
    centos6/7通用查看系统版本
    OSI与TCP/IP网络模型分层
    RAID基础知识总结
    yum的初步了解与使用
    Red Hat Enterprise Linux 官方正式版镜像下载
    MYSQL的基本使用,以及错误代码的意思
    人生第一次研读MFC截图工具的笔记心得
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10469360.html
Copyright © 2020-2023  润新知