2025-4-10-C++学习 分支结构(中)

  继续,题目有点长了。

P5713 【深基3.例5】洛谷团队系统

题目描述

在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 5 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 3 3 分钟,但是上传题目之前还需要一次性花费 11 11 11 分钟创建与配置团队。现在要配置 n n n 道题目,如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

输入格式

输入一个正整数 n n n,表示需要配置的题目量。

输出格式

输出一行,一个字符串。如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

输入输出样例 #1

输入 #1

2

输出 #1

Local

输入输出样例 #2

输入 #2

50

输出 #2

Luogu

说明/提示

数据保证 1 ≤ n ≤ 100 1 \leq n\leq 100 1n100

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    cin >> a;
    if ((5 * a) <= (11 + 3 * a))
    {
        cout << "Local";
    }
    else
    {
        cout << "Luogu";
    }
    return 0;
}

P5714 【深基3.例7】肥胖问题

题目描述

BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是 m h 2 \dfrac{m}{h^2} h2m,其中 m m m 是指体重(千克), h h h 是指身高(米)。不同体型范围与判定结果如下:

  • 小于 18.5 18.5 18.5:体重过轻,输出 Underweight
  • 大于等于 18.5 18.5 18.5 且小于 24 24 24:正常体重,输出 Normal
  • 大于等于 24 24 24:肥胖,不仅要输出 BMI 值(使用 cout 的默认精度),然后换行,还要输出 Overweight

现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0 0 0,不要输出后缀 0 0 0

请注意,保留六位有效数字不是保留六位小数。例如 123.4567 123.4567 123.4567 应该输出为 123.457 123.457 123.457 5432.10 5432.10 5432.10 应该输出为 5432.1 5432.1 5432.1

输入格式

共一行。

第一行,共 2 2 2 个浮点数, m , h m, h m,h,分别表示体重(单位为 kg),身高(单位为 m)。

输出格式

输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight 情况的特别处理请参照题目所述。

输入输出样例 #1

输入 #1

70 1.72

输出 #1

Normal

输入输出样例 #2

输入 #2

100 1.68

输出 #2

35.4308
Overweight

说明/提示

对于所有数据, 40 ≤ m ≤ 120 40\le m \le 120 40m120 1.4 ≤ h ≤ 2.0 1.4 \le h \le 2.0 1.4h2.0 m m m h h h 的小数点后不超过三位。

题解代码

# include <bits/stdc++.h>
using namespace std;

int main()
{
    double m ,h;
    cin >> m >> h;
    double BMI = m / (h * h);
    if(BMI < 18.5)
    {
        cout << "Underweight" << endl;
    }
    else if(BMI < 24.0)
    {
        cout << "Normal" <<endl;
    }
    else
    {
        cout << setprecision(6) << BMI << endl;
        cout << "Overweight" << endl;
        
    }
    return 0;
}

P5715 【深基3.例8】三位数排序

题目描述

给出三个整数 a , b , c ( 0 ≤ a , b , c ≤ 100 ) a,b,c(0\le a,b,c \le 100) a,b,c(0a,b,c100),要求把这三位整数从小到大排序。

输入格式

输入三个整数 a , b , c a,b,c a,b,c,以空格隔开。

输出格式

输出一行,三个整数,表示从小到大排序后的结果。

输入输出样例 #1

输入 #1

1 14 5

输出 #1

1 5 14

输入输出样例 #2

输入 #2

2 2 2

输出 #2

2 2 2

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    vector<int> nums = {a, b ,c};
    sort(nums.begin(),nums.end());
    cout << nums[0] << " " << nums[1] << " " << nums[2];
    return 0;
}

P5716 【深基3.例9】月份天数

题目描述

输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。

输入格式

输入两个正整数,分别表示年份 y y y 和月数 m m m,以空格隔开。

输出格式

输出一行一个正整数,表示这个月有多少天。

输入输出样例 #1

输入 #1

1926 8

输出 #1

31

输入输出样例 #2

输入 #2

2000 2

输出 #2

29

说明/提示

数据保证 1583 ≤ y ≤ 2020 1583 \leq y \leq 2020 1583y2020 1 ≤ m ≤ 12 1 \leq m \leq 12 1m12

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int y, m;
    cin >> y >> m;
    int a1[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if (((y%400 == 0) || (y%4 == 0) && (y%100 != 0)) && (m == 2))
    {
        cout << 29 << endl;
    }
    else
    {
        cout << a1[m-1] << endl;
    }
    return 0;
}

P1085 [NOIP 2004 普及组] 不高兴的津津

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式

输入包括 7 7 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10 10 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式

一个数字。如果不会不高兴则输出 0 0 0,如果会则输出最不高兴的是周几(用 1 , 2 , 3 , 4 , 5 , 6 , 7 1, 2, 3, 4, 5, 6, 7 1,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

输入输出样例 #1

输入 #1

5 3
6 2
7 2
5 3
5 4
0 4
0 6

输出 #1

3

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
    int ans[7];
    int ans_max, ans_idx;
    
    for (int k1=0;k1<7;++k1)
        {
            cin >> a >> b;
            if (k1 == 0)
            {
                ans_max = a + b;
                ans_idx = 1;
            }
            else
            {
                 if(ans_max < a + b)
                 {
                     ans_max = a + b;
                     ans_idx = k1+1;
                 }
            }
        }

    if(ans_max > 8)
    {
        cout << ans_idx << endl;
    }
    else
    {
        cout << 0;
    }
    
    return 0;
}

P1909 [NOIP 2016 普及组] 买铅笔

题目背景

NOIP2016 普及组 T1

题目描述

P 老师需要去商店买 n n n 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 3 3 3 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P 老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 n n n 支铅笔才够给小朋友们发礼物。

现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n n n 支铅笔最少需要花费多少钱。

输入格式

第一行包含一个正整数 n n n,表示需要的铅笔数量。

接下来三行,每行用 2 2 2 个正整数描述一种包装的铅笔:其中第 1 1 1 个整数表示这种包装内铅笔的数量,第 2 2 2 个整数表示这种包装的价格。

保证所有的 7 7 7 个数都是不超过 10000 10000 10000 的正整数。

输出格式

1 1 1 个整数,表示 P 老师最少需要花费的钱。

输入输出样例 #1

输入 #1

57
2 2
50 30
30 27

输出 #1

54

输入输出样例 #2

输入 #2

9998
128 233
128 2333
128 666

输出 #2

18407

输入输出样例 #3

输入 #3

9999
101 1111
1 9999
1111 9999

输出 #3

89991

说明/提示

铅笔的三种包装分别是:

  • 2 2 2 支装,价格为 2 2 2;
  • 50 50 50 支装,价格为 30 30 30;
  • 30 30 30 支装,价格为 27 27 27

P 老师需要购买至少 57 57 57 支铅笔。

如果她选择购买第一种包装,那么她需要购买 29 29 29 份,共计 2 × 29 = 58 2 \times 29 = 58 2×29=58 支,需要花费的钱为 2 × 29 = 58 2 \times 29 = 58 2×29=58

实际上,P 老师会选择购买第三种包装,这样需要买 2 2 2 份。虽然最后买到的铅笔数量更多了,为 30 × 2 = 60 30 \times 2 = 60 30×2=60 支,但花费却减少为 27 × 2 = 54 27 \times 2 = 54 27×2=54,比第一种少。

对于第二种包装,虽然每支铅笔的价格是最低的,但要够发必须买 2 2 2 份,实际的花费达到了 30 × 2 = 60 30 \times 2 = 60 30×2=60,因此 P 老师也不会选择。

所以最后输出的答案是 54 54 54

数据范围

保证所有的 7 7 7 个数都是不超过 10000 10000 10000 的正整数。

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int num;
    cin >> num;
    int a, b;
    int min_val,tmp_val;
    for(int k1 = 0; k1<3;++k1)
        {
            cin >> a >> b;
            tmp_val = ceil((double)num / a) * b;
            if(k1 == 0)
            {
                min_val = tmp_val;
            }
            else
            {
                if(min_val > tmp_val)
                {
                    min_val = tmp_val;
                }
            }
        }
    cout << min_val << endl;
    
    return 0;
}
Logo

集算法之大成!助力oier实现梦想!

更多推荐