每日一练蓝桥杯C语言:2020年真题题集(B组)下

简介: 每日一练蓝桥杯C语言:2020年真题题集(B组)下

⛳6.成绩统计

#include <iostream>
using namespace std;
int score[1001];
int main()
{
  int n;
  int jg=0;
  int yx=0;
  cin>>n;
  for(int i=0;i<n;i++)
  {
    cin>>score[i];
  }
  for(i=0;i<n;i++)
  {
    if(score[i]>=60)
      jg++;
    if(score[i]>=85)
      yx++;
  }
  int jres=float((double)jg*100/n+0.5);
  int yres=float((double)yx*100/n+0.5);
  cout<<jres<<"%"<<endl;
  cout<<yres<<"%"<<endl;
  return 0;
}

⛳7.回文日期

分析:需要判断输入的日期后续仍为正确日期数,需要分别判断年份的四位倒序能为正确的月日,注意闰年判断。日期为正期数时需要判断是否为回文日期,同时判断是否为ABABBABA型回文。考虑获得回文日期时不再判断普通回文并记录该数,获得ABABBABA型回文时不再判断并记录该数,两个获得后跳出循环.分两行输出两个日期。

#include <iostream>
using namespace std;
int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//判断日期是否合法 
bool check(int date)
{
  int year = date/10000;
  int month = date/100%100;
  int day = date%100;
  if(!month || month>13 || !day)  return false;
  if(month != 2 && day > months[month]) return false;
  if(month == 2){
    bool leap = year%4==0 && year%100 || year%400==0;
    if(day > 28+leap) return false;
  } 
  return true;
}
//判断日期是否为回文日期
bool Ishuiwen(int date)
{
  int temp = 0;
  while(date > temp){//求日期后四位的值
    temp = temp * 10 + date%10;
    date /= 10;
  }
  if(date == temp)  return true;
  return false;
} 
//判断日期是否为ABABBABA型日期 
bool IsABhuiwen(int date){
  int d,m;
  d = date%100;//日期后两位78位
  m = date/100%100;//日期后56位
  if(Ishuiwen(date) && d==m)  return true;//满足回文且56位=78时判断日期为ABABBABA型日期
  return false;
}
int main()
{
  int N;
  cin>>N;
  for(int i=N+1;i<=89991231;i++)
    if(check(i)&&Ishuiwen(i))
    {
      cout<<i<<endl;
      break;
    }
  for(int j=N+1;j<=89991231;j++)
    if(check(j)&&IsABhuiwen(j))
    {
      cout<<j<<endl;
      break;
    }
    return 0;
}

⛳ 8.子串分值和

分析:逐一查找字符串的每个子集,将子集中重复的字符去掉再计算子集长度

#include<iostream>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
string s;
int res;
int cal(string s){
  set<char> st; 
  for(int i = 0; i < s.size(); i++){
    st.insert(s[i]);
  }
  return st.size();
}
int main(){
  cin >> s;
  for(int i = 0; i < s.size(); i++){
    for(int j = i; j < s.size(); j++){
      string sub = s.substr(i, j - i + 1);
      res += cal(sub);
    }
  }
  cout << res;
  return 0;
}

⛳9.平面切分

#include<iostream>
#include<cstring>
#include<set>
using namespace std;
set<pair<double,double> > se;
const int N = 1005;
double A[N];
double B[N];
set<pair<double,double> > s;
set<pair<double,double> >::iterator it;
int main()
{
  int n,i,j,x,y;
  cin>>n;
  for(i=0;i<n;i++)
  {
    cin>>x>>y;
    s.insert(make_pair(x,y));
  }
  n = s.size();
  for(i=0,it=s.begin(),it++;it!=s.end();it++,i++)
  {
    A[i]=(*it).first;
    B[i]=(*it).second;
  }
  long long ans=2;
  for(i=1;i<n;i++)
  {
    set<pair<double,double> > se;
    for(j=i-1;j>=0;j--)
    {
      double x=(B[j]-B[i])/(A[i]-A[j]);
      double y=(A[j]*B[i]-A[i]*B[j])/(A[j]-A[i]);
      se.insert(make_pair(x,y));
    }
    int n2=se.size();
    ans+=(n2+1);
  }
  cout<<ans<<endl;
}

⛳10.字串排序

分析:显然要使长度最短,我们就不能浪费每一个字母,所以,一定有字母是递减的顺序的,要使字典序最短,每个字母出现的数量一定是要递减的,这样就好了,限制一下每个字母最多出现的次数然后就是dfs dfsdfs爆搜,//Author : lifehappy的垫脚石

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
char ans[N], res[N];
int n, len;
bool judge() 
{
  int i = len;
  while(ans[i] == res[i] && i) i--;
  return res[i] < ans[i];
}
void dfs(int now, int maxn, int m, int sum) {
  if(sum == n) 
  {
    if(m < len || (m == len && judge()))
    {
      len = m;
      for(int i = 1; i <= len; i++)   ans[i] = res[i];
    }
    return;
  }
  if(now >= 26) return ;
  for(int i = 1; i <= maxn; i++) 
  {
    int temp = sum + m * i;
    if(temp > n) return ;
    res[m + i] = char(now + 'a');
    dfs(now + 1, i, m + i, temp);
  }
}
int main()
{
    len = 0x3f3f3f3f;
    scanf("%d", &n);
    dfs(0, 8, 0, 0);
    for(int i = len; i >= 1; i--)
    putchar(ans[i]);
  return 0;
}

相关文章
|
6月前
|
存储 人工智能 安全
C语言:选择+编程(每日一练Day15)
C语言:选择+编程(每日一练Day15)
87 2
|
6月前
|
编译器 C语言
C语言:选择+编程(每日一练Day3)
C语言:选择+编程(每日一练Day3)
64 0
|
6月前
|
C语言
C语言:选择+编程(每日一练Day5)
C语言:选择+编程(每日一练Day5)
58 3
|
6月前
|
C语言
C语言:选择+编程(每日一练Day13)
C语言:选择+编程(每日一练Day13)
62 0
|
1月前
|
人工智能 算法 测试技术
2023年第15届蓝桥杯模拟赛第二期(c语言)
2023年第15届蓝桥杯模拟赛第二期(c语言)
|
6月前
|
测试技术 C语言
C语言每日一练Day03——移除元素
C语言每日一练Day03——移除元素
|
6月前
|
C语言
C语言每日一练——Day02:求最小公倍数(3种方法)
C语言每日一练——Day02:求最小公倍数(3种方法)
|
6月前
|
C语言
C语言每日一练——Day01:求最大公约数(三种方法)
C语言每日一练——Day01:求最大公约数(三种方法)
|
6月前
|
存储 人工智能 C语言
C语言:选择+编程(每日一练Day16)
C语言:选择+编程(每日一练Day16)
63 3
|
6月前
|
C语言
C语言:选择+编程(每日一练Day14)
C语言:选择+编程(每日一练Day14)
63 2