題A:

看到題意很容易算出答案就是256乘1024乘1024乘8除以32
答案:67108864
題B:

直接模擬就好了,用一個陣列來記錄每個數字的次數,暴力到陣列該數字不夠時,就不能表示完這個數字,
想到今天做這題吐血,考完反應過來問的從1最多拼到多少,我還以為是最多不夠拼出多少,沒減1,,,,
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<9;i++) a[i]=2021;
int n=1;
while(1){
int s=n;
while(s){
if(a[s%10]) a[s%10]--;
else break;
s/=10;
}
if(s) break;
else n++;
}
cout<<n-1<<'\n';
// system("pause");
return 0;
}
答案:3181
題C:

不會待補,,,
題D:

直接用一個陣列把n的所有因子存入一個陣列,三重回圈模擬lwh,統計出滿足條件的個數就行了,
#include <bits/stdc++.h>
using namespace std;
long long y[10000001];
int main()
{
long long n=2021041820210418;
long long cur=sqrt(n);
int index=0;
for(int i=1;i<cur;i++)
if(n%i==0){
y[index++]=i;
y[index++]=n/i;
}
int ans=0;
if(cur*cur==n) y[index++]=cur;
for(int i=0;i<index;i++)
for(int j=0;j<index;j++)
for(int z=0;z<index;z++)
if(y[i]*y[j]*y[z]==n) ans++;
cout<<ans;
// system("pause");
return 0;
}
答案:2430
題E:

好久沒寫圖了,模板都忘記了,穩一點,直接floyd沖了,反正只是選擇題,得到正確答案就好,,,轉了一分鐘答案才出來,,,(當然正解不是這樣,哈哈哈哈)
#include <bits/stdc++.h>
using namespace std;
long long g[2100][2100];
int main()
{
for(int i=1;i<2050;i++)
for(int j=1;j<2050;j++)
g[i][j]=1e14;
for(int i=1;i<2050;i++)
for(int j=i+1;j<=i+21;j++)
{
g[i][j]=i/__gcd(i,j)*j;
g[j][i]=i/__gcd(i,j)*j;
}
for(int i=1;i<2050;i++)
for(int j=1;j<2050;j++)
for(int k=1;k<2050;k++)
if((g[j][i]+g[i][k])<g[j][k]) g[j][k]=g[j][i]+g[i][k];
cout<<g[1][2021];
// system("pause");
return 0;
}
答案:10266837
大題寫了兩道,第一次藍橋杯希望有省三把,球球了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/278126.html
標籤:其他
