试题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;
}