当前位置 博文首页 > LiarLiu的博客:十二届蓝桥杯填空题题解
实力不够没能参加省赛也没个人报名,只能后续补题了,菜鸟做题
此题比较简单,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分钟,,,,!