蓝桥杯练习二

1.时钟

在 12 小时制的钟表中, 有分针、时针、秒针来表示时间。记分针和时 针之间的夹角度数为 A(0≤A≤180) 、分针和秒针之间的夹角度数为 (0≤B≤180) 。而恰好在 ss 时 ff 分 mm 秒时, 满足条件 A=2 BA=2B 且 0≤s≤6;0≤f<60;0≤m<60, 请问 s, f, ms,f,m 分别是多少。

请你找出一个 0 时 0 分 0 秒以外的解。

注意时针、分针、秒针都围绕中心匀速转动。

提交格式为三个由一个空格隔开的整数, 分别表示 s, f, ms,f,m 。如 31158 表示 3 点 11 分 58 秒。

#include <stdio.h>
#include <stdlib.h>
int main(){
    int h=0,m=0,s=0;
    double A,B,ds,dm,dh;
    while(h<6){
        s++;
            if(s==60){
                s=0;
                m++;

            }
            if(m==60){
                m=0;
                h++;
            }
            ds=s*6.0;
            dm=(m+s/60.0)*6.0;//时针、分针、秒针都围绕中心匀速转动,所以需要加上秒针所带来的度数变化
            dh=(h+m/60.0+s/360.0)*30.0;
            A=dh-dm;
            B=dm-ds;
            if(A<0){
                A=dm-dh;
            }
            if(B<0){
                B=ds-dm;
            }
            if(A>180)
                A=360-A;
            if(B>180)
                B=360-B;
            double c=2*B;
            if(A==c){
                break;
            }
        }
    printf("%d %d %d",h,m,s);
    return 0;
}

2.2022(填空)

将2022拆分成10个互不相同的正整数之和,总共有多少种拆分方法?
注意交换顺序视为同一种方法,例如2022=
1000+1022和2022=1022++1000就视为同—种方法。
 

#include <stdio.h>
#include <stdlib.h>
long long dp[11][2023];
int main() {
    dp[0][0] = 1;
    for (int i = 1; i <= 2022; i++) {
        for (int j = 10; j >= 1; j--) {
            for (int k = i; k <= 2022; k++) {
                dp[j][k] += dp[j - 1][k - i];
            }
        }
    }
    printf("%lld",dp[10][2022]);
}

3.卡牌

问题描述
这天,小明在整理他的卡牌。
他一共有n种卡牌,第i种卡牌上印有正整数数i(i ∈[1,n]),且第à种卡牌现有a;张。
而如果有n张卡牌,其中每种卡牌各一张,那么这n张卡牌可以被称为―套牌。小明为了凑出尽可能多套牌,拿出了m张空白牌,他可以在上面写上数i,将其当做第i种牌来凑出套牌。然而小明觉得手写的牌不太美观,决定第i种牌最多手写b张。
请问小明最多能凑出多少套牌?
输入格式
输入共3行,第一行为两个正整数n, m。
第二行为n个正整数a1, a2,.. . , (n 。
第三行为n个正整数b1, b2,. . . , bn 。
输出格式
一行,一个整数表示答案。
样例输入

4 5

1 2 3 4

5 5 5 5

样例输出

3

样例说明
这5张空白牌中,拿2张写1,拿1张写2,这样每种牌的牌数就变为了3,3,3,4,可以凑出3套牌,剩下2张空白牌不能再帮助小明凑出—套。
评测用例规模与约定
对于30%的数据,保证n≤2000;
对于100%的数据,保证n≤2× 103 ; ai,bi ≤2n; m ≤n2。
 

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int a[200005];
int b[200005];
int main()
{
    int n,  i, r = 0, f = 1;
    long long int m;
    scanf("%d%d", &n, &m);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n; i++)
    {
        scanf("%d", &b[i]);
    }
    while (f)
    {
        for (i = 0; i < n; i++)
        {
            if (a[i])
            {
                a[i]--;
            }
            else if (b[i] > 0 && m > 0)
            {
                b[i]--;
                m--;
            }
            else
            {
                f = 0;
                break;
            }
        }
        if (f)
        {
            r++;
        }
    }
    printf("%d", r);
}

4.刷题统计

问题描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做α道题目,周六和周日每天做b道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于n题?
输入格式
输入一行包含三个整数a,b和n.
输出格式
输出一个整数代表天数。

样例输入

10 20 99

样例输出

8

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  int a,b,n;
  int s=0;
  int sum=0;
  scanf("%d %d %d",&a,&b,&n);
  while(s<n){
    for(int i=1;i<=5;i++){
        s+=a;
        sum++;
        if(s>=n){
          break;
        }
      }
      if(s<n){
        for(int j=0;j<2;j++){
            s=b+s;
            sum++;
            if(s>=n){
          break;
        }
        }
      }else{
          break;
      }
    }
  printf("%d",sum);
  return 0;
}

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值