当前位置:   article > 正文

蓝桥杯省赛真题2014题解_蓝桥杯2014

蓝桥杯2014

1.标题:啤酒和饮料
    啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。

    我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

    注意:答案是一个整数。请通过浏览器提交答案。

    不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。

答案:11

代码实现:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int x,y;
  6. for(x=1;x<35;x++)
  7. {
  8. for(y=x+1;1.9*y<=(82.3-2.3*x);y++)
  9. {
  10. if(1.9*y+2.3*x==82.3)
  11. cout << x;
  12. }
  13. }
  14. return 0;
  15. }

 

2.标题:切面条

    一根高筋拉面,中间切一刀,可以得到2根面条。

    如果先对折1次,中间切一刀,可以得到3根面条。

    如果连续对折2次,中间切一刀,可以得到5根面条。

    那么,连续对折10次,中间切一刀,会得到多少面条呢?

答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。

答案:1025

代码实现:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int num=2;
  5. for(int i=1;i<=10;i++){
  6. num = num*2-1;
  7. }
  8. cout<<num;
  9. return 0;
  10. }
  11. //每次折一下相当于层数每次乘2, 跟2的次方有关, 观察可知, 折n次, 得到2^n + 1 条面条

 

3.标题:李白打酒

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

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

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

    这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 

    请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

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

答案:14

代码实现:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int cnt=0;
  5. char f[15];
  6. for(int i=0;i<5;i++){
  7. f[i]='a';
  8. }
  9. for(int i=5;i<15;i++){
  10. f[i]='b';
  11. }
  12. do{
  13. int n=2;
  14. for(int i=0;i<15;i++){
  15. if(f[i]=='a'){
  16. n=n*2;
  17. }
  18. else if(f[i]=='b'){
  19. n=n-1;
  20. }
  21. if(n<0){
  22. break;
  23. }
  24. }
  25. if(n==0){
  26. cnt++;
  27. }
  28. }while(next_permutation(f,f+14));
  29. cout<<cnt<<endl;
  30. return 0;
  31. }

 

4.标题:史丰收速算

    史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!

    速算的核心基础是:1位数乘以多位数的乘法。

    其中,乘以7是最复杂的,就以它为例。

    因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进1

    同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n

    下面的程序模拟了史丰收速算法中乘以7的运算过程。

    乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。

    乘以 7 的进位规律是:
    满 142857... 进1,
    满 285714... 进2,
    满 428571... 进3,
    满 571428... 进4,
    满 714285... 进5,
    满 857142... 进6

    请分析程序流程,填写划线部分缺少的代码。

//计算个位 
int ge_wei(int a)
{
    if(a % 2 == 0)
        return (a * 2) % 10;
    else
        return (a * 2 + 5) % 10;    
}

//计算进位 
int jin_wei(char* p)
{
    char* level[] = {
        "142857",
        "285714",
        "428571",
        "571428",
        "714285",
        "857142"
    };  
    char buf[7];
    buf[6] = '\0';
    strncpy(buf,p,6);
    int i;
    for(i=5; i>=0; i--){
        int r = strcmp(level[i], buf);
        if(r<0) return i+1;
        while(r==0){
            p += 6;
            strncpy(buf,p,6);
            r = strcmp(level[i], buf);
            if(r<0) return i+1;
            ______________________________;  //填空
        }
    }
    return 0;
}

//多位数乘以7
void f(char* s) 
{
    int head = jin_wei(s);
    if(head > 0) printf("%d", head);
    
    char* p = s;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/302693
推荐阅读
相关标签
  

闽ICP备14008679号