蓝桥杯专题-真题版含答案-【牌型种数】【煤球数目】【寒假作业】【奖券数目】

  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

#include 
#include 
#include 
#include 

using namespace std;

string pai[13];

int countOf(vector<string> path, string p) {
    int ans = 0;
    for (int i = 0; i < path.size(); ++i) {
        if (path[i] == p)
            ans++;
    }
    return ans;
}

int ans;

void f(int k, vector<string> path) {

    if (k == 0)ans++;
    for (int i = 0; i < 13; ++i) {
        if (countOf(path, pai[i]) == 4)continue;
        path.push_back(pai[i]);//拼接,代表采纳这张牌
        f(k - 1, path);
        path.erase(path.end() - 1);
    }
}

void i2s(int num, string &str) {
    stringstream ss;
    ss << num;
    ss >> str;
}

int main(int argc, const char *argv[]) {
    for (int i = 1; i <= 13; ++i) {
        i2s(i, pai[i - 1]);
    }
    vector<string> v;
    f(13, v);
    cout << ans << endl;
    return 0;
}

煤球数目

有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),

如果一共有100层,共有多少个煤球?

请填表示煤球总数目的数字。

#include 
using namespace std;
int main(int argc, const char * argv[]) {
    int pre=1;
    int plus=2;
    long sum=1;
    for (int k = 2; k <=100 ; ++k) {
        pre=pre+plus;
        sum+=pre;
        plus++;
    }
    cout<<sum<<endl;
    return 0;
}

寒假作业

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。

#include 
using namespace std;
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
int ans;
bool check(){
    if(a[0]+a[1]==a[2]&&
       a[3]-a[4]==a[5]&&
       a[6]*a[7]==a[8]&&
       a[9]%a[10]==0&&
       a[9]/a[10]==a[11])
        return true;
    return false;
}
void f(int k){
    if(k==13){
        if(check()){
            printf("%d+%d=%d  %d-%d=%d  %d*%d=%d  %d/%d=%d\n",
                   a[0],a[1],a[2],
                   a[3],a[4],a[5],
                   a[6],a[7],a[8],
                   a[9],a[10],a[11]);
            ans++;
        }
    }
    for (int i = k; i < 13; ++i) {
        {int t=a[i];a[i]=a[k];a[k]=t;}
//        提前排除,提升效率
        if((k==2&&a[0]+a[1]!=a[2]) || k==5&&a[3]-a[4]!=a[5]){
            {int t=a[i];a[i]=a[k];a[k]=t;}
            continue;
        }
        f(k+1);
        {int t=a[i];a[i]=a[k];a[k]=t;}
    }
}
int main(int argc, const char * argv[]) {
    f(0);
    printf("%d\n",ans);
    return 0;
}

奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,
如果任何两张奖券不重号,最多可发出奖券多少张。

#include 
#include 
#include 
using namespace std;

void i2s(int num, string &str) {
    stringstream ss;
    ss << num;
    ss >> str;
}

int main(int argc, const char * argv[]) {
    int ans=0;
    for (int i = 10000; i <=99999 ; ++i) {
        string s;
        i2s(i,s);
        if(s.find('4')==string::npos)ans++;
    }
    cout<<ans<<endl;
    return 0;
}

其他

作者:小空和小芝中的小空
转载说明-务必注明来源:https://zhima.blog.csdn.net/
这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气,日后定有一番大作为!!!旁边有点赞收藏今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

你可能感兴趣的:(蓝桥全系列,蓝桥杯,职场和发展,认证考试,真题讲解)