2014年蓝桥杯预赛 C/C++本科B组 解题报告 (本人写的)

这篇博客分享了作者参加2014年蓝桥杯预赛C/C++本科B组的比赛解题报告,详细介绍了啤酒和饮料问题、切面条问题、李白打酒问题、史丰收速算问题等多个算法题目的解题思路和代码实现,涉及数学、逻辑和编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题:啤酒和饮料


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

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

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


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

 

结题思路:把啤酒,饮料和总共花的钱都乘上10,这样比较简单。

#include<stdio.h>
int main()
{
 int beer,cola;
 //暴力求解,82.3/2.3=35,82.3/1.9=43
 for(beer=1;beer<35;beer++)
 for(cola=1;cola<45;cola++)
 {
  //若是double则要写成|beer*2.3+cola*1.9-82.3|<0.0000001的形式
  if((823==beer*23+cola*19)&&(beer<cola))
   printf("%d\n",beer);
 }
 return 0;
}

 

标题:切面条


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

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

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

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

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


sum = 2^n + 1

答案:1025

直接可以看出来

 

标题:李白打酒


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

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

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

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

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

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

#include<stdio.h>
int count=0;
void fun(int sob,int d,int h)
{
if((h==0)&&(d>0))return ;//最后一个是花
 if((sob<0)||(d<0)||(h<0)) return ;
 if((0==sob)&&(0==d)&&(0==h))
  count++;
 fun(sob*2,d-1,h);
 fun(sob-1,d,h-1);
}
int main()
{
 fun(2,5,10);
 printf("%d\n",count);
 return 0;
}

 

标题:史丰收速算


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

    速算的核心基础是: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];

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值