第一题,门牌号
手撕就行了。
代码:
#include
using namespace std;int main()
{
int cnt = 0;
for(int i = 1; i <= 2020; i++)
{
string str = to_string(i);
for(int j = 0; j < str.size(); j++)
{
if(str[j] == 50)
cnt++;
}
}
cout << cnt << endl;
}
第二题 既约分数
手撕
代码
int main()
{
int cnt = 0;
for(int i = 1; i <= 2020; i++)
{
for(int j =1; j <= 2020; j++ )
{
if(i == j)
continue;
if(__gcd(i,j) == 1)
cnt++;
}
}
cnt += 1;
cout << cnt << endl;
return 0;
}
第三题,蛇形填数
思路:
手动模拟
细节见代码注释。
代码
int main()
{
int i = 2, j = 0;
int flag = 0; //0默认为向上, 1为向下。
int dp[100][100] = {0};
int k = 4;
//初始化;
dp[0][0] = 1; dp[1][0] = 3; dp[0][1] = 2;
while(1)
{
if(flag == 0) //向上
{
while(1)
{
dp[i][j] = k++;
i--; j++;
if(i == -1)
{
flag = 1;
i = 0;
break;
}
}
}
if(flag == 1) //向下
{
while(1)
{
dp[i][j] = k++;
i++; j--;
if(j == -1)
{
flag = 0;
j = 0;
break;
}
}
}
if(i >= 50)
break;
}
cout << dp[19][19] << endl;
}
第四题 跑步锻炼
思路:手动模拟
细节见代码注释
int SUM()
{
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int week = 6, day = 1;
int year = 0, month = 0;
int sum = 0;
for(year = 2000; year <= 2020; year++)
{
//判断闰年
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
a[2] = 29;
for(month = 1; month <= 12; month++)
{
day = 1;
while(1)
{
if(week == 8)
{
week = 1;
}
if(day == 1 || week == 1)
{
sum += 2;
}
//正常情况
else
sum += 1;
day++; week++;
if(day == a[month] + 1)
break;
if(month == 10 && year == 2020 && day == 2)
{
return sum;
}
}
}
a[2] = 28; //重置
}
}int main()
{
cout << SUM() << endl;
}
第五题,七段码
要用图的知识,作为菜鸟的我,还不会。
但可以手动数出来。
第六天,成绩统计
思路,手撕就行了,但注意格式输出。
代码,
int main()
{
int n = 0, score = 0;
int sum = 0;
int jige = 0, youxiu = 0;
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d",&score);
if(score >= 60)
jige++;
if(score >= 85)
youxiu++;
}
double one = 0.0;
double two =0.0;
one = jige/(n * 1.0) * 100;
two = youxiu/(n *1.0) * 100;
int result1 = one + 0.5;
int result2 = two + 0.5;
printf("%d%\n",result1);
printf("%d%\n",result2);
return 0;
}
第七题,子串分值和
思路:利用循环截取子串,在排序后,判断无重复字母的个数。
代码,
int no_copy(string str)
{
int n = str.size();
int cnt = 1;
for(int i = 0; i < n - 1; i++)
{
if(str[i] != str[i + 1])
cnt++;
}
return cnt;
}
int main()
{
string str;
string Substr;
int sum = 0;
cin >> str;
for(int i = 0; i < str.size(); i++)
{
for(int j = i + 1; j < str.size(); j++)
{
Substr = str.substr(i,j - i + 1);
sort(Substr.begin(), Substr.end());
sum += no_copy(Substr);
}
}
sum += str.size();
cout << sum << endl;
return 0;
}
能做的就这几道题,不能再混日子等死,好好努力呀
总结,
蓝桥杯,注意细节,暴力破解,能拿一半的分,明天比赛加油。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)