蓝桥2014年省赛A组题目题解

填空题

猜年龄

在这里插入图片描述
正确答案:

10
#include <bits/stdc++.h>
using namespace std;
int main()
{
   
    bool ok = true;
    int x, y;
    for(int i = 9; ok; i++)
    {
   
        for(int j = i - 8; j < i; j++)
        {
   
            if(i*j == (i+j)*6)
            {
   
                ok = false;
                x = i, y = j;
            }
            if(!ok) break;
        }
    }
    printf("%d %d\n",x,y);
    return 0;
}

切面条

在这里插入图片描述
正确答案:

1025

1 + 2 n 2^n 2n n n n 表示对折次数


神奇算式

在这里插入图片描述
正确答案:

12
#include <bits/stdc++.h>
using namespace std;
int main()
{
   
    int ans = 0;
    for(int i = 102; i < 999; i++)
    {
   
        int t = i;
        set<int>s; s.clear();
        while(t > 0) s.insert(t%10), t/= 10;
        if(s.size() != 3) continue;
        for(int j = 1; j <= 9; j++)
        {
   
            if(s.find(j) != s.end()) continue;
            int temp = i*j;
            if(temp < 1023  || temp > 9876) continue;
            set<int>one;
            one.clear();
            while(temp > 0) one.insert(temp%10), temp /= 10;
            vector<int> v; v.clear();
            for(set<int>:: iterator it = s.begin(); it != s.end(); it++) v.push_back(*it);
            v.push_back(j);
            int ok = 1;
            for(int k = 0; k < 4; k++)
                if(one.find(v[k]) == one.end()) ok = 0;
            if(ok)
            {
   
                ans++;
                cout<<i<<" "<<j<<endl;
            }
        }
    }

    set<int>c; c.clear();
    for(int i = 10; i < 99; i++)
    {
   
        int t = i;
        set<int>s;
        s.clear();
        while(t > 0) s.insert(t%10), t/= 10;
        if(s.size() != 2) continue;
        for(int j = 10; j < 99; j++)
        {
   
            int a = j%10, b = j/10;
            if(a == b || s.find(a) != s.end() || s.find(b) != s.end()) continue;
            int temp = i*j;
            if(temp < 1023  || temp > 9876) continue;
            set<int>one;
            one.clear();
            while(temp > 0) one.insert(temp%10), temp /= 10;
            vector<int> v; v.clear();
            for(set<int>:: iterator it = s.begin(); it != s.end(); it++) v.push_back(*it);
            v.push_back(a); v.push_back(b);
            int ok = 1;
            for(int k = 0; k < 4; k++)
                if(one.find(v[k]) == one.end()) ok = 0;
            if(ok)
            {
   
                if((c.find(i) != c.end() && c.find(j) != c.end()) || i == j) continue;
                ans++;
                cout<<i<<" "<<j<<endl;
                c.insert(i); c.insert(j);
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

史丰收速算

在这里插入图片描述
正确答案:

#include <bits/stdc++.h>
using namespace std;

int ge_wei(int a)
{
   
    if(a%2 == 0)  //偶数
        return (a*2)%10;  //乘以2保留个位
    else   //奇数
        return (a*2+5)%10; //乘以2加5保留个位
}
//计算进位
int jin_wei(char* mod)
{
   
    char* level[] = {
   
        "142857",
        "285714",
        "428571",
        "571428",
        "714285",
        "857142"
    };  //多位数超过 n/7 就要进 n

    char buf[7];
    buf[6] = '\0';
    strncpy(buf, mod, 6);  //将mod这个字符串拷贝到buf中

    int i;
    for(i = 5; i >= 0; i--){
   
        int tr = strcmp(level[i], buf);  //从后往前,依次取 level中的串和buf比较
        if(tr 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸愉信奥

谢谢亲的支持,我会继续努力啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值