P8714 [蓝桥杯 2020 省 B2] 填空问题 题解

· · 题解

试题 A

依次枚举 1-2020 的各个数位是否等于 2 即可。

#include<bits/stdc++.h>
using namespace std;
int cnt;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    for(int i=1;i<=2020;++i){
        int j=i;
        while(j){
            if(j%10==2)++cnt;
            j/=10;
        }
    }
    cout<<cnt;
    return 0;
}

可得答案 624

试题 B

枚举分子和分母,分子与分母互质就将计数器 +1

#include<bits/stdc++.h>
using namespace std;
int cnt;
inline int gcd(int a,int b){
    if(!b)return a;
    return gcd(b,a%b);
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    for(int i=1;i<=2020;++i)
        for(int j=1;j<=2020;++j)
            if(gcd(i,j)==1)
                ++cnt;
    cout<<cnt;
    return 0;
}

可得答案 2481215

试题 C

手算即可,方法不一,你也可以自己把表列出来

可得答案 761

试题 D

直接处理闰年和每一天即可。

可得答案 8879

试题 E

枚举每个二极管亮还是不亮。从某一个亮着的二极管开始做一次搜索,判断是否可以只通过亮着的二极管走到所有二极管。

可得答案 80

最终代码

#include<bits/stdc++.h>
using namespace std;
int ans[]={624,2481215,761,8879,80};
char n;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    cout<<ans[n-65];//65即为大写字母A
    return 0;
}