GESP 一,二,三级 随机题解 6

一级:B3838 [GESP202306 一级] 时间规划

思路:

不需要单独处理小时和分钟的进位或借位问题。
直接将时刻统一为分钟单位,减少了错误的可能性。

代码:

#include<iostream>
using namespace std;
int main() 
{
    // 输入开始时刻和结束时刻
    int sh,sm,eh,em;
    cin>>sh>>sm>>eh>>em;
    // 计算总分钟数
    int stm=sh*60+sm;
    int etm=eh*60+em;
    // 计算两个时刻之间的分钟差
    int mind=etm-stm;
    // 输出分钟差
    cout<<mind<<endl;
    return 0;
}

二级:B4036 [GESP202409 二级] 数位之和

思路:

将输入的多个正整数存入数组或列表中,逐一检查每个数。

通过反复取余(num % 10)和整除(num /= 10),提取数字的每一位,并累加其和。

对位数之和进行取余判断(sum % 7 == 0)。

对于每个数字,输出其是否是美丽数字的判断结果。

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
    cin>>n;
    int a[n];// 定义一个大小为 n 的数组,用于存储输入的数字
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n;i++)
    {
        int b=a[i];
        int c=0;
        while(b!=0)
        {
            c+=b%10;// 取当前数字的个位并加到总和
            b/=10;// 去掉当前数字的个位
        }
        if(c%7==0) // 判断位数和是否是 7 的倍数
        {
            cout<<"Yes"<<endl;
        }
        else
        {
            cout<<"No"<<endl;
        }
    }
    return 0;
}

三级:B3842 [GESP202306 三级] 春游

思路:

  • 使用布尔数组 b[1005] 记录学生是否报到,b[v] = 1 表示编号 vvv 的学生已经报到。

  • 初始化布尔数组为 false,表示所有学生初始状态为未报到.

  • 输入 m 个学生编号,对于每个编号 v,将 b[v] 设置为 true

  • 遍历编号 [0,n−1],如果 b[i]==0,说明编号 i 的学生未报到,输出编号。

  • 如果所有学生都报到(即布尔数组中所有 [0,n−1] 均为 true),需要输出 n。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;//n(总数)和 m(已选择)
bool b[1005]={0},f=1;// 数组 b 用来标记已选择的元素,初始化为 0(未选择),f 用来标记是否找到缺失元素
int main()
{
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
	    int v;
		cin>>v;
		b[v]=1;	// 将数组中对应的位置标记为已选择
	}	
	for(int i=0;i<n;i++)
	{
		if(b[i]==0)
		{
			cout<<i<<" ";
			f=0;// 将 flag 设置为 0,表示找到了缺失元素
		}
	}
	if(f)
	{
		cout<<n;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值