蓝桥杯2014C语言A组赛题解析

本文解析了几个有趣的数学和编程问题,包括面条切割问题、李白打酒的数学逻辑、史丰收速算方法、图形打印算法、六角填数谜题、蚂蚁感冒传播模拟以及地宫取宝的策略计算。通过这些问题,展示了数学在编程中的应用和解决复杂问题的思路。
摘要由CSDN通过智能技术生成

切面条
   一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。那么,连续对折10次,中间切一刀,会得到多少面条呢?

对折次数n           面条根数f(n)
0               1
1               3
2               5

f(n)=f(n-1)+2^(n-1),n=2,3,...
f(n)=1,n=1              
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;

int fun(int x)
{
    int i;
    int s=1;
    if(x == 1)
        return 3;
    else{
        for(i=1;i<x;i++)
        {
            s=2*s;
        }
        return (s + fun(x-1));
    }
}

int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",fun(n));

    return 0;
}

李白打酒
   话说大诗人李白,一生好饮。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)

#include <iostream>
#include <cstdio>
using namespace std;
int sum=0;
char str[100];
/*jiu:酒量
 count:遇到店和花总次数 
 count_hua:遇到花次数
 count_dian: 遇到店次数

 遇到店和花递归搜索
 fun(jiu-1,count+1,count_hua+1,count_dian); 
 fun(jiu*2,count+1,count_hua,count_dian+1);
*/ 
int fun(int jiu, int count,int count_hua, int count_dian)
{
    int i;
    if(jiu <0 || (jiu == 0 && count < 15)|| count >15)
        return 0;
    if(jiu==0 && count ==15 && count_hua==10 && count_dian==5)
    {
        sum++;
        for(i=0;i<15;i++)
        {
            putchar(str[i]);
        }
        cout<<endl;
    }

    str[count]='a';
    fun(jiu-1,count+1,count_hua+1,count_dian);

    str[count]='b';
    fun(jiu*2,count+1,count_hua,count_dian+1);
}
int main()
{

    fun(2,0,0,0);
    cout<<"sum:"<<sum<<endl;
    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, 满 85714

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值