A-门牌制作
【问题描述】
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
//暴力
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int sum,t;
int main()
{
sum=0,t=0;
for(int i=1;i<=2020;i++) {
t=i;
while(t){
if(t%10==2)
sum++;
t=t/10;
}
}
cout<<sum<<endl;
return 0;
}
B-既约分数
问题描述】
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如,3/4, 5/2, 1/8, 7/1 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1和 2020)?
//直接暴力就可以了
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int gcd(int a,int b) {
return b?gcd(b,a%b):a;
}
int main() {
int d=0,sum=0;
for(int i=1; i<=2020; i++) {
for(int j=1; j<=2020; j++) {
d=gcd(i,j);
if(d==1)
sum++;
}
}
cout<<sum<<endl;
return 0;
}
C- 蛇形填数
【问题描述】
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
请你计算矩阵中第 20 行第 20 列的数是多少?
//这是一个规律题 1 (14) 5 (+24) 13.。。。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int main()
{
int sum=1;
for(int i=1;i<20;i++)
sum+=i*4;
cout<<sum<<endl;
return 0;
}
D-跑步锻炼
【问题描述】
小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
//这个题目就是考查基本的日历问题
计数月,日或分钟等等
计算日的算法如下,小时分钟和秒就是在此基础上乘以相应的进制即可,月份就是在模板里面month++的时候顺便计数即可。