当前位置 博文首页 > LiarLiu的博客:十二届蓝桥杯填空题题解

    LiarLiu的博客:十二届蓝桥杯填空题题解

    作者:[db:作者] 时间:2021-09-21 18:09

    第十二届蓝桥杯省赛题解

    实力不够没能参加省赛也没个人报名,只能后续补题了,菜鸟做题

    题解如下:

    在这里插入图片描述
    此题比较简单,1MB=2^20B,而1B中可以存储8个二进制位,所以本题答案为:
    256 * 1024 * 1024 * 8 / 32 = 67108864
    在这里插入图片描述
    B题用时挺久,本想直接数学归纳法得出答案,但停在了3000就受不了了,只能选择暴力解法:

    #include <iostream>
    using namespace std;
    
    int check(int num[10])
    {
    	for(int i=0;i<10;i++)
    	{
    		if(num[i]==0)
    		{
    			return 0;
    		}
    	}
    	return 1;
    }
    
    int main()
    {
    	int num[10];
    	for(int i=0;i<10;i++)
    	{
    		num[i]=2021;
    	}
    	int r=1;
    	int j;
    	for(j=1;r>=1;j++)
    	{
    		int t=j;
    		while(t)
    		{
    			int x=t%10;
    			num[x]--;
    			t/=10;	
    		}
    		r=check(num);
    	}
    	cout<<j;
    	return 0;
    }
    
    

    在这里插入图片描述
    此题不会,看了两分钟题目,好,做不了,下一道
    在这里插入图片描述
    我的思路是寻找出在n范围符合的数据组,一一遍历计数得出答案即可,但cmd运行了5分钟答案还是没出来,只能向舍友学习优化过后的方式,方算出答案(先确定因数范围,再限制)

    #include<bits/stdc++.h>
    using namespace std;
    
    long long n=2021041820210418;
    long long num[100000000005];
    
    int main()
    {
        int temp=0,cnt=0;
        for(long long i=1;i<=sqrt(n);i++)
        {
            if(n%i==0)
            {
                num[temp++]=i;
                num[temp++]=n/i;
            }
        }
        for(int i=0;i<temp;i++)
        {
            for(int j=0;j<temp;j++)
            {
                for(int k=0;k<temp;k++)
                {
                    if(num[i]*num[j]*num[k]==n)
                    {
                        cnt++;
                    }
                }
            }
        }
        cout<<cnt<<endl;
        system("pause");
        return 0;
    }
    
    

    在这里插入图片描述
    这道题是我还没学到的知识点,舍友说我不用敲了,因为我没学这块知识,放弃挣扎。
    总的就写出三道题吧,耗时将近77分钟,,,,!

    cs
    下一篇:没有了