【无标题】

学习目标:

2021-2023年的蓝桥杯思路


学习内容:

2022题目

1.小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题?

思路:先计算出需要多少周,再计算剩下多少天

好处:不需要大量暴力枚举,占用空间

#include<stdio.h>
int main()
{//用long long int 定义数据才不会超出数据要求大概也是0~10^18多一点
/*得出总结:开头定义时候分开,备注每一个变量的作用,如果变量大用 longlongint 和lld,这时候不推荐暴力枚举
因为是数字很大,算出大概然后再算剩下一周的天数*/
  long long  int day=1;//表示周几天
  long long int num=0;
  long  long int n;
  long long int a,b;
  scanf("%lld %lld",&a,&b);
  scanf("%lld",&n);
 //注意,这里不能直接暴力的例举,会有部分超时
  long long int sum=a*5+b*2;
  long long  int weeks=n/sum;//可以被sum整除的
 num+=7*weeks;
 int unfull_weeks=n%sum;//不可以被sum整除的
 for(int i=unfull_weeks;i>0;)
 {
   if(day==7)
   day=1;
   if(day%7==6||day%7==0) i-=b;
   else i-=a;
   num++;
   day++;
 }
  printf("%lld",num);
  return 0;
}

2.

思路:每个元素之间相乘后相加,计算每次元素累加,一开始用草稿纸写,根据规律转换为我们想要的格式,用for循环的i自增表示下标是个方向!

由a0*a1+a0*a2+a0*a3+a1*a2+a1*a3+a2*a3

可化为a0(a1+a2+a3) +a1(a2+a3)+a2*a3,但括号内元素一开始为其他元素的集合,不好算

还可以化为a1*a0+a2*(a1+a0)+a3(a0+a1+a2) ,括号里面的元素每次都加一个,用for循环,i的自增,用一个变量承接即可。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  long int n=0,sum=0,s=0;//n为多少个数字,sum为累加乘和
  scanf("%ld",&n);
  long int a[200000]={0},i;//作用生成每个数组,a[4]生成五个元素,最后一位a[4]不用
  for ( i=0;i<n;i++){//作用生成每个元素
    scanf("%ld",&a[i]);
    
  }
    for ( i=0;i<n;i++){//换个思路,a[i+1]*s=a1*a0  a2(a1+a0)
    s += a[i];//计算每次元素累加,a1*a0+a2*(a1+a0)+a3(a0+a1+a2)
    sum += a[i+1]*s;
    
  }

  printf("%ld",sum);
  return 0;
}

3.


思路:可以一个个数,也可以用冒泡

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100];
    char t;
    int i,j;
    scanf("%s",a);
    for(i=0;i<strlen(a)-1;i++){
        for(j=0;j<strlen(a)-1-i;j++){//这里的j小于,因为每次交换顺序后,保证最大为最后面一个,比较过后不比较,所以是越来越小
            if(a[j]>a[j+1]) {//如果前比后大,互换顺序
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    printf("%s",a);
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值