蓝桥杯2019年第十届省赛C++B组
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
A组队5分 √
解法可以将符合的数写在一个表格中排序进行比较
98+99+98+97+98=490
B年号字串5分 √
做法一
做法二
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
h | i | j | k | l | m | n |
o | p | q | r | s | t | u |
v | w | x | y | z | ||
C: 数列求值10分 √
答案 4659
#include<bits/stdc++.h>
using namespace std;
int main(){
/*每个数的后四位*/
int n;
cin>>n;
int a,b,c;
a=b=c=1;
int d;
for(int i = 4; i <= n; i++){
d=a+b+c;
a=b%10000;
b=c%10000;
c=d%10000;
}
cout<<d<<endl;
return 0;
}
D: 数的分解10分 ×
#include<bits/stdc++.h>
using namespace std;
//判断是否有2或4
int judge(int n){
while(n){
//判断最后一位的数字
if(n%10==2 || n%10==4){
return 0;
}
//继续减少位数循环判断取模
n=n/10;
}
//while循环完没有返回0就是不存在返回1.
return 1;
}
int main(){
int cnt=0;
for(int i = 1; i < 2019; i++){
if(judge(i)){
for(int j = 1; j < i; j++){
if(judge(j)){
for(int k = 1; k < j; k++){
if(judge(k)){
if((i+j+k) == 2019){
cnt++;
}
}
}
}
}
}
}
cout<<cnt;
return 0;
}
F: 特别数的和15分 √
在循环体中循环时将每次的数字先转换成字符串
在当前字符串的长度范围内循环时判断其中是否有2、0、1、9若有立即相加break退出当前内部循环体的循环进行下一个数的判断。
注意使用break不用continue是因为一旦符合立即相加就无需再判断数字否则会多加。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int sum=0;
for(int i = 1; i <= n; i++){
string temp = to_string(i);
for(int j = 0; j < temp.length(); j++){
if(temp[j] == '2' || temp[j] == '0' || temp[j] == '1' || temp[j] == '9'){
int num = stoi(temp);
sum+=num;
break;
}
}
}
cout<<sum;
return 0;
}