精华内容
下载资源
问答
  • 第九届蓝桥杯c++a组
    2019-11-30 20:02:44

    第几个幸运数

    到x星球旅行的游客都被发给一个整数,作为游客编号。

    x星的国王有个怪癖,他只喜欢数字3,5和7。

    国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

    我们来看前10个幸运数字是:

    3 5 7 9 15 21 25 27 35 45

    因而第11个幸运数字是:49

    小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

    请你帮小明计算一下,59084709587505是第几个幸运数字。

    需要提交的是一个整数,请不要填写任何多余内容。

    答案:1905

    思路:用1作为初始值,先将1分别乘上3、5、7得到3、5、7,再将这三个数分别乘上3、5、7得到9、15、21;15、25、35;21、35、49,以此类推。需要注意的是,为了得到59084709587505的正确序号,我们得保证前面依次乘出来的数要从小到大排序,并且不能重复,于是就要用的priority_queue和set。

    代码:
     

    #include<bits/stdc++.h>
    using namespace std;
     
    priority_queue<long long,vector<long long>,greater<long long> > q;
    set<long long> s;
     
    int main()
    {
    	int ans=-1;
    	q.push(1);
    	s.insert(1);
    	while(1)
    	{
    		long long n=q.top();
    		q.pop();
    		ans++;
    		if(n==59084709587505)
    			break;
    		for(int i=3;i<=7;i+=2)
    		{
    			long long t=n*i;
    			if(!s.count(t))
    			{
    				q.push(t);
    				s.insert(t);
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    

     

    更多相关内容
  • 2018年4月1日蓝桥杯省赛第九届蓝桥杯真题C/C++(A组)!2018年4月1日蓝桥杯省赛第九届蓝桥杯真题C/C++(A组)
  • 2018第九届蓝桥杯C/C++B决赛真题2018第九届蓝桥杯C/C++B决赛真题2018第九届蓝桥杯C/C++B决赛真题2018第九届蓝桥杯C/C++B决赛真题2018第九届蓝桥杯C/C++B决赛真题2018第九届蓝桥杯C/C++B决赛真题2018第九...
  • 2018第九届蓝桥杯C++B真题。2018第九届蓝桥杯C++B真题。
  • const int N = 110, mod = 1e9 + 7; int n, m; LL s[N][N], c[N][N]; LL f[N][N][N]; void get_prefix(int i) { for (int j = 1; j ; j ++ ) for (int k = 1; k ; k ++ ) s[j][k] = (s[j - 1][k] + s[j][k - 1] - s...

    搭积木

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    typedef long long LL;
    
    const int N = 110, mod = 1e9 + 7;
    
    int n, m;
    LL s[N][N], c[N][N];
    LL f[N][N][N];
    
    void get_prefix(int i)
    {
        for (int j = 1; j <= m; j ++ )
            for (int k = 1; k <= m; k ++ )
                s[j][k] = (s[j - 1][k] + s[j][k - 1] - s[j - 1][k - 1] + f[i][j][k]) % mod;
    }
    
    LL get_sum(int x1, int y1, int x2, int y2)
    {
        return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
    }
    
    int main()
    {
        scanf("%d%d", &n, &m);
        
        char str[N];
        for (int i = n; i; i -- )
        {
            cin >> str + 1;
            for (int j = 1; j <= m; j ++ )
            {
                c[i][j] = c[i][j - 1] + (str[j] == 'X');
            }
        }
        
        f[0][1][m] = 1;
        get_prefix(0);
        
        LL res = 1;
        for (int i = 1; i <= n; i ++ )
        {
            for (int j = 1; j <= m; j ++ )
                for (int k = j; k <= m; k ++ )
                {
                    if (c[i][k] - c[i][j - 1] == 0)
                    {
                        LL &x = f[i][j][k];
                        x = (x + get_sum(1, k, j, m)) % mod;
                        res = (res + x) % mod;
                    }
                }
            get_prefix(i);
        }
        
        printf("%lld\n", (res + mod) % mod);
        return 0;
    }
    

    矩阵求和

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    typedef long long LL;
    const int N = 1e7 + 9, mod = 1e9 + 7;
    LL euler[N], primes[N];
    bool st[N];
    LL s[N];
    int n, cnt;
    
    void get_eulers(int n)  // 线性筛法求1~n的欧拉函数
    {
        euler[1] = 1;
        for (int i = 2; i <= n; i ++ )
        {
            if (!st[i])
            {
                primes[cnt ++ ] = i;
                euler[i] = i - 1;
            }
            for (int j = 0; primes[j] <= n / i; j ++ )
            {
                int t = primes[j] * i;
                st[t] = true;
                if (i % primes[j] == 0)
                {
                    euler[t] = euler[i] * primes[j];
                    break;
                }
                euler[t] = euler[i] * (primes[j] - 1);
            }
        }
        
        s[1] = 1;
        for (int i = 2; i <= n; i ++ )
            s[i] = (s[i - 1] + 2 * euler[i]) % mod;
    }
    
    int main()
    {
        cin >> n;
        
        get_eulers(n);
        
        LL res = 0;
        for (int d = 1; d <= n; d ++ )
            res = (res + s[n / d] * d % mod * d) % mod;
        printf("%lld\n", res);
        return 0;
    }
    
    展开全文
  • 这是2018年省赛第九届蓝桥杯真题C/C++(C),新鲜出炉。。
  • 2018年第九届蓝桥杯省赛真题 C/C++ 语言大学B原题。
  • 做完今年省赛题之后的感觉就是,去年国赛可能也就只比今年省赛难一点点叭hh,简单题比十三还要简单,难题比省赛还要难的。 试题 A: 带宽 200 / 8 = 25 试题 B: 纯质数 这道题暴力直接交肯定会TLE的,虽然本题...

    总体评价

    国赛跟省赛差距感觉还是蛮大的叭。所以说,还是要好好准备的如果想拿国一的话。我觉得重点还是要准备DP,它每年都会至少两道题,所以说准备DP的话受益还是很大的。不聊啦~补题去惹

    试题 A: 带宽

    200 / 8 = 25
    

    试题 B: 纯质数

    这道题暴力直接交肯定会TLE的,虽然本题暴力理论时间复杂度很高,但是因为质数很少,本地评测很快就出来了,最多大概几秒钟。如果采用筛素数的方式, O ( n ) O(n) O(n)时间复杂度就能过。

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 40010, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    int a[N];
    set<int> S = {2, 3, 5, 7};
    
    bool is_prime(int x)
    {
        if (x < 2) return false;
        for (int i = 2; i * i <= x; i ++ )
            if (x % i == 0)
                return false;
        return true;
    }
    
    bool check(int x)
    {
        while (x)
        {
            int t = x % 10;
            if (!S.count(t))
                return false;
            x /= 10;
        }
        return true;
    }
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        int T;
        T = 1;
        // cin>>T;
        int n = 20210605;
        int cnt = 0;
        while (T--)
        {
            rep(i, 1, n + 1)
            {
                if (is_prime(i) && check(i)) cnt ++;
            }
        }
        cout << cnt << endl;
        return 0;
    }
    

    试题 C: 完全日期

    模拟:977

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 40010, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    set<int> S = {2004, 2008, 2012, 2016, 2020};
    bool is_leaf(int y, int m)
    {
        if (m != 2) return false;
        return S.count(y);   
    }
    
    bool check(int y, int m, int d)
    {
        int x = 0;
        while (y)
        {
            x += y % 10;
            y /= 10;
        }
        while (m)
        {
            x += m % 10;
            m /= 10;
        }
        while (d)
        {
            x += d % 10;
            d /= 10;
        }
        
        int z = sqrt(x);
        return (z * z) == x;
    }
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        int T;
        T = 1;
        // cin>>T;
        int cnt = 0;
        while (T--)
        {
            int y = 2001, m = 1, d = 1;
            while (y <= 2021)
            {
                if (check(y, m, d))
                {
                    cnt ++ ;
                }
                d ++;
                if (d > months[m] + is_leaf(y, m))
                    m ++ , d = 1;
                if (m > 12)
                    m = 1, y ++ ;
            }
        }
        cout << cnt << endl;
        return 0;
    }
    

    试题 D: 最小权值

    2653631372
    这道题关键就是什么时候这课树的根权值最小。这道题我也不是很确定对不对,思路就是如果深度越深,会发现权值承指数增长,我们尽量让深度较小,深度越小就必须每行都摆满就是一个完全二叉树。

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 2200, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    ll f[N];
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        // init();
        int T;
        T = 1;
        //cin>>T;
        while (T--)
        {
            int n = 2021;
            memset(f, 0x3f, sizeof f);
            f[0] = 0;
            rep(i, 1, n + 1)
            {
                rep(l, 0, i)
                {
                    f[i] = min(f[i], 1ll + 2 * f[l] + 
                    3 * f[i - l - 1] + l * l * (i - l - 1));
                }
            }
            cout << f[n] << endl;
        }
        return 0;
    }
    

    试题 E: 大写

    库函数:toupper可以直接用

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 5000, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        int T;
        T = 1;
        // cin>>T;
        while (T--)
        {
            string s;
            cin >> s;
            rep(i, 0, sz(s))
            {
                s[i] = toupper(s[i]);
            }
            cout << s << endl;
        }
        return 0;
    }
    

    试题 F: 123

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 2000001, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    ll f[N];
    
    ll calc(ll x)
    {
        ll l = 0, r = N - 1;
        while (l < r)
        {
            ll mid = l + r + 1 >> 1;
            if ((1 + mid) * mid / 2 <= x)
                l = mid;
            else
                r = mid - 1;
        }
        ll s = f[r];
        x -= (r + 1) * r / 2;
        s += (x + 1) * x / 2;
        return s;
    }
    
    void init()
    {
        rep(i, 1, N)
            f[i] = f[i - 1] + 1ll * (1 + i) * i / 2;
    }
    
    int main()
    {
        init();
        int T;
        cin>>T;
        while (T--)
        {
            ll x, y;
            scanf("%lld %lld", &x, &y);
            printf("%lld\n", calc(y) - calc(x - 1));
        }
        return 0;
    }
    

    异或变换

    这种题肯定是找规律的题目,就是找到第一位对后面的影响什么时候能够消除,先打表暴力枚举循环节,发现最多是16384次,之后就可以暴力了

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 10005, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    int n;
    ll t;
    char s[N];
    int a[N];
    
    int main()
    {
        // init();
        // cin>>T;
        int T = 1;
        while (T--)
        {
            scanf("%d%lld%s", &n, &t, s);
            t %= 16384;
            
            rep(i, 0, n)
                if (s[i] == '1')
                    a[i] = 1;
            
            rep(j, 0, t)
            {
                int pre = a[0];
                rep(i, 1, n)
                {
                    int t = a[i];
                    a[i] ^= pre;
                    pre = t;
                }
            }
            rep(i, 0, n)
                printf("%d", a[i]);
        }
        return 0;
    }
    

    二进制问题

    // shiran
    #include <bits/stdc++.h>
    using namespace std;
    
    #define rep(i, a, n) for (int i = a; i < n; i++)
    #define per(i, n, a) for (int i = n - 1; i >= a; i--)
    #define sz(x) (int)size(x)
    #define fi first
    #define se second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    typedef long long ll;
    typedef pair<int, int> PII;
    const int mod = 1e9+7;
    const int N = 71, M = 300010;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    
    int m, a[N];
    ll n;
    ll C[N][N];
    
    void init()
    {
        C[0][0] = 1;
        rep(i, 1, N)
        {
            C[i][0] = 1;
            rep(j, 1, i + 1)
            {
                C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
                //printf("%d %d %lld\n", i, j, C[i][j]);
            }
        }
    }
    
    int main()
    {
        init();
        // cin>>T;
        int T = 1;
        while (T--)
        {
            scanf("%lld%d", &n, &m);
            n ++;
            
            int len = 0;
            for (; n; n >>= 1)
                a[++ len] = n & 1;
            for (int i = 1, j = len; i < j; i ++ , j -- )
                swap(a[i], a[j]);
            
            ll ans = 0;
            int tot = 0;
            rep(i, 1, len + 1)
            {
                if (a[i])
                {
                    ans += C[len - i][m - tot], tot ++ ;
                }
            }
            printf("%lld\n", ans);
        }
        return 0;
    }
    

    翻转括号序列

    这道题暂时不太会写,主要是懒标记的线段树写得不熟,这个月抓紧时间补完。

    异或三角

    这道题也是数位DP,我怎么感觉蓝桥杯这么喜欢考数位DPhhh不会惹~

    展开全文
  • 十二届蓝桥杯校内模拟赛大学C(C与C++)赛题
  • 20180401 第九届蓝桥杯C/C++真题 B ..................................................
  • 2018第九届蓝桥杯C/C++大学生B比赛题目,2018年4月1日举行的
  • 2018第九届蓝桥杯C/C++ A组试题答案参考

    万次阅读 多人点赞 2018-04-01 23:05:19
    3 5 7 9 15 21 25 27 35 45 因而11个幸运数字是:49 小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是几个幸运数字,否则领不到奖品。 请你帮小明计算一下,...

    题目1

    标题:分数

    1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 
    每项是前一项的一半,如果一共有20项,
    求这个和是多少,结果用分数表示出来。
    类似:
    3/2
    当然,这只是加了前2项而已。分子分母要求互质。

    注意:
    需要提交的是已经约分过的分数,中间任何位置不能含有空格。

    请不要填写任何多余的文字或符号。

    解题思路:可直接手算通分,利用cmath里的pow()函数,很容易得出答案

    答案:1048575/524288

     

     

    题目2
    标题:星期一

    整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
    (不要告诉我你不知道今天是星期几)

    注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字。

    解题思路:算出1901年第一天开始到2000年最后一天的总天数sum(注意闰年的判断),

    易得出sum=36525(天);由于2000年12月31日是周日,按照周日,六,五,四,三,

    二,一的顺序往前推,共有36525/7=5217 个循环,余数是6. 故可知这六个数分别对应

    的是前六项(不含周一)

    因此答案应为:5217

     

     

    题目3
    标题:乘积尾零

    如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?

    5650 4542 3554 473 946 4114 3871 9073 90 4329 
    2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 
    9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 
    1486 5722 3135 1170 4014 5510 5120 729 2880 9019 
    2049 698 4582 4346 4427 646 9742 7340 1230 7683 
    5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 
    6701 6645 1671 5978 2704 9926 295 3125 3878 6785 
    2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 
    3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 
    689 5510 8243 6114 337 4096 8199 7313 3685 211

    注意:需要提交的是一个整数,表示末尾零的个数。不要填写任何多余内容

    思路:两个数乘积结果产生0的情况只有两种:

    (1)这两个数的因子分别应含有2和5

    (2)某一个乘数本身含有尾零

    #include<iostream>
    using namespace std;


    int main()
    {
      int num_2=0;//含有因子2的个数 
        int num_5=0;//含有因子5的个数
    int a[10][10]={
    {5650,4542,3554,473, 946, 4114, 3871, 9073, 90, 4329},
    {2758 ,7949, 6113,5659, 5245, 7432, 3051, 4434, 6704, 3594}, 
    {9937 ,1173 ,6866,3397 ,4759, 7557, 3070, 2287, 1453, 9899},
    {1486 ,5722 ,3135,1170, 4014, 5510, 5120, 729, 2880, 9019},
    {2049 ,698 ,4582,4346 ,4427, 646, 9742, 7340, 1230, 7683},
    {5693 ,7015 ,6887,7381, 4172, 4341, 2909, 2027, 7355, 5649}, 
    {6701 ,6645 ,1671,5978 ,2704, 9926, 295, 3125, 3878, 6785},
    {2066,4247 ,4800,1578, 6652, 4616, 1113, 6205, 3264, 2915},
    {3966,5291 ,2904,1285, 2193, 1428, 2265, 8730, 9436, 7074},
    {689,5510,8243,6114, 337, 4096, 8199, 7313, 3685, 211}
    } ;
    int sum=0;
    for(int i=0;i<10;i++)
    {
    for(int j=0;j<10;j++)
    {
    while(a[i][j]%10==0)
    {
    sum++;a[i][j]/=10;//含有末尾0的话,sum直接+1; 
    }
    while(a[i][j]%2==0)
    {
    num_2++;a[i][j]/=2;
    }
    while(a[i][j]%5==0)
    {
    num_5++;a[i][j]/=5;
    }
    }
    }
    cout<<sum+((num_2<num_5)?num_2:num_5)<<endl;
    return 0;

    答案:31

     

     

    题目4
    标题:第几个幸运数

    到x星球旅行的游客都被发给一个整数,作为游客编号。
    x星的国王有个怪癖,他只喜欢数字3,5和7。
    国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

    我们来看前10个幸运数字是:
    3 5 7 9 15 21 25 27 35 45
    因而第11个幸运数字是:49

    小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

    请你帮小明计算一下,59084709587505是第几个幸运数字。

    需要提交的是一个整数,请不要填写任何多余内容。

    解题思路:用一个队列装幸运数,从3,5,7出发,依次将队首乘3,5,7的结果加入队尾(注意判重),直到出现目标59084709587505.

    程序代码如下:

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    long long q[10000];int mul[3]={3,5,7};
    int main()
    {
    memset(q,sizeof(q),0);
    q[0]=3;q[1]=5;q[2]=7;
    int front=0;int rear=3;
    while(front<rear)
    {
    for(int i=0;i<3;i++)
    {
    if(q[front]*mul[i]>59084709587505)continue;//大于59084709587505的排在后面的不入队列 
    long long t=q[front]*mul[i];
    bool exist=0;
    for(int j=rear-1;j>=0;j--)if(q[j]==t){exist=1;break;}//判断t是否已经在队列中 
    if(!exist)
    {
      q[rear]=t;rear++;//将t入队 
    if(t==59084709587505)//此时队尾元素已经是59084709587505,但还存在front到rear之间的元素和3,5,7相乘的结果小于59084709587505的可能 
    {
    for(int k=front;k<rear-1;k++)//以上<59084709587505的可能情况,都应加入队列中 
    {
    for(int i=0;i<3;i++)
    {
    long long t=q[k]*mul[i];
    if(t<59084709587505)
    {
    bool exist=0;
    for(int j=rear-1;j>=0;j--)if(q[j]==t){exist=1;break;}//判断t是否已经在队列中
    if(!exist)
    {
    q[rear]=t;rear++;
    }
    }
    }
    }

    sort(q,q+rear);//对3到59084709587505的幸运数进行排序 
    int pos=rear-1;
    while(q[pos]!=59084709587505)pos--;//查找排序后的59084709587505所在的下标序号 
    cout<<pos+1<<endl;return 0;
    }
    }
    }
    front++;
    }
      return 0;

    运行结果:1905

     

     

    题目5


    标题:打印图形

    如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。

    当n=1,2,3的时候,输出如下:
    请仔细分析程序,并填写划线部分缺少的代码。

    n=1时:

    n=2时:

    n=3时:

    源程序:


    #include <stdio.h>
    #include <stdlib.h>

    void show(char* buf, int w){
    int i,j;
    for(i=0; i<w; i++){
    for(j=0; j<w; j++){
    printf("%c", buf[i*w+j]==0? ' ' : 'o');
    }
    printf("\n");
    }
    }

    void draw(char* buf, int w, int x, int y, int size){
    if(size==1){
    buf[y*w+x] = 1;
    return;
    }

    int n = _________________________ ; //填空
    draw(buf, w, x, y, n);
    draw(buf, w, x-n, y ,n);
    draw(buf, w, x+n, y ,n);
    draw(buf, w, x, y-n ,n);
    draw(buf, w, x, y+n ,n);
    }

    int main()
    {
    int N = 3;
    int t = 1;
    int i;
    for(i=0; i<N; i++) t *= 3;

    char* buf = (char*)malloc(t*t);
    for(i=0; i<t*t; i++) buf[i] = 0;

    draw(buf, t, t/2, t/2, t);
    show(buf, t);
    free(buf);

    return 0;
    }


    注意:只提交划线部分缺少的代码,不要抄写任何已经存在的代码或符号。

    解题思路:此题较简单。直接上答案: size/3

    展开全文
  • 2018年第九届蓝桥杯省赛C++B和javaB题目,c++B的部分题解可以看我的博客:https://blog.csdn.net/zuzhiang/article/details/79825178
  • 2018 第九届 蓝桥杯大赛个人赛决赛-A组赛题 C++ 三角形面积 阅兵方阵 找假币 约瑟夫环 自描述序列 采油
  • 十三届蓝桥杯大赛软件赛省赛 C/C++ 研究生 试题.pdf
  • 2018第九届蓝桥杯C++省赛B题目汇总

    千次阅读 2019-06-19 21:39:33
    一题 标题:几天 2000年的1月1日,是那一年的1天。 那么,2000年的5月4日,是那一年的几天? 注意:需要提交的是一个整数,不要填写任何多余内容。 题解: 所以5.4号是124+1=...
  • 思路:一次不是元音字母的时候,找到结束位置记录,并break掉,后面从上次结束的下一个位置开始,遍历找到一次不是辅音的字母…如此四次,注意中间判断是否达到字符串长度 8.正整数序列 思路:这个题是啥来着,想...
  • 蓝桥杯国赛第十题目pdf,C/C++组的题目考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试 题。 考试时间为 4 小时。考试期间选手可浏览自己已经提交的答案,被浏览的 答案允许拷贝。时间截止后,...
  • 十三届蓝桥杯大赛软件类省赛C/C++_B试题
  • 2022年十三届蓝桥杯C++B国赛思路以及部分代码

    多人点赞 热门讨论 2022-06-19 13:08:02
    本人一年打蓝桥杯,体验感还算可以个人感觉5分填空题比编程题还要难(开考暴击) 不过稳定住心态,后面的编程题还是可以拿分的主要考察了:动态规划,以及前几很少考的最短路问题 注意:由于目前没有地方可以测...
  • 开个数组存下0-9卡牌的数量, 然后从1开始往后遍历 每次都分解当前遍历的数 如果出现卡牌数量为零 说明当前数无法拼出 直接输出上一个数 #include<bits/stdc++.h> #define ll long long using namespace std;...
  • 十三届蓝桥杯 C++ B题解: A:进位制 (2022)9= 2 * 9^3 + 2 * 9+ 2=1478 B:顺子日期:(0,1,2算顺子,逆序不算) 枚举,14个 #include <iostream> #include <cstring> #include <algorithm&...
  • 第九届蓝桥杯省赛C语言b.zip
  • 十二届蓝桥杯C++B 真题 试题A. 空间 小蓝准备用256MB的内存空间开一个数组,数组的每个元素都是32 位二进制整数。 如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个32 位二...
  • 其中 i 个人带了 ai 元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢? 为了公平起见,我们希望在总付钱量恰好为 S 的前提下,最后每个人付的钱的标准差最小。这里我们...
  • 这是2018年省赛第九届蓝桥杯真题C/C++(B),新鲜出炉。。
  • 第九届蓝桥杯国赛BBB口胡题解 第一题:简单数学,不讲了。 第二题:暴力位运算或者dp[i][2]dp[i][2]dp[i][2]递推。 第三题:lowbit()lowbit()lowbit()求出最低位的1然后就左移异或一下。 第四题:每步走111或kkk,...
  • 三题标题:乘积尾零如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 ...
  • 2022年十三届蓝桥杯c++ b 总结

    千次阅读 2022-04-11 18:58:35
    A 进制转十进制 B 顺子日期 C 刷题统计 D 修建灌木 E X进制减法 F 统计子矩阵 G 积木画 H 扫雷 I 李白打酒加强版 J 砍竹子 A 进制转十进制 签到题 答案为:1478 B 顺子日期 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,134
精华内容 5,253
关键字:

第九届蓝桥杯c++a组

c++ 订阅