试题A :门牌制作
#include <bits/stdc++.h>
using namespace std;const int N = 100000;
int arr[N];int main()
{int ans = 0,t;for(int i = 1;i <= 2020;i++){t = i;while(t > 0){if(t % 10 == 2) ans++;t /= 10;}}cout<<ans<<endl;return 0;
}
试题B :既约分数
#include <bits/stdc++.h>
using namespace std;int gcd(int a,int b)
{if(a % b == 0) return b;return gcd(b,a % b);
}int main()
{int ans = 0;for(int i = 1;i <= 2020;i++){for(int j = 1;j <= 2020;j++){if(gcd(i,j) == 1) ans++;}}cout<<ans<<endl;return 0;
}
试题C :蛇形填数
#include <bits/stdc++.h>
using namespace std;int arr[100][100];int main()
{int sum = 1; for(int i = 0;i < 50;i++){//奇数,行-,列+ if(i % 2 == 1){for(int x=i,y=1;x >= 0 && y <= i;x--,y++)arr[x][y] = sum++;}//偶数,行+,列-else{for(int x=1,y=i;x <= i && y >= 0;x++,y--)arr[x][y] = sum++;} }cout<<arr[20][20]<<endl;return 0;
}