首页 > 其他分享 >洛谷P8807 [蓝桥杯 2022 国 C] 取模

洛谷P8807 [蓝桥杯 2022 国 C] 取模

时间:2024-06-15 14:58:40浏览次数:23  
标签:取模 P8807 int 余数 蓝桥 鸽巢 集合 原理

题目:

解读(思路与分析):

  1. 题目总结:

  2. 对于给定的整数 n 和范围 m,要找到两个不同的 x 和 y,它们除以 n 后的余数相等。

思路:

对于每组给出的n,m询问,可以通过遍历范围从 1 到 m 的所有可能的 j,并计算 n 对 j 取模的余数。使用一个集合来存储已经出现过的余数,如果当前余数已经存在于集合中,则说明找到了满足条件的 x 和 y。如果遍历完所有可能的 j 后仍然没有找到满足条件的 x 和 y,则输出 "No",否则输出 "Yes"。

代码及解读:

#include<bits/stdc++.h>  
using namespace std;  
  
int main()  
{  
    int T, n, m;  
    cin >> T;  
    while (T--)//循环处理每个变量
    {  
        cin >> n >> m;  
        bool found = false;//布尔变量,用于标记是否找到相同余数  
        unordered_set<int> results;//无序集合,用于存储余数 
        for (int j = 1; j <= m; j++)  
        {  
            int result = n % j;//计算n对i取模的余数  
            if (results.count(result) > 0)//如果余数已经存在于集合中,输出yes  
            {  
                cout << "Yes" << endl;  
                found = true;//更新found为true  
                break;  
            }  
            else  
                results.insert(result);//将余数插入集合中  
        }  
        if (!found)//如果没有找到相同余数,输出no  
            cout << "No" << endl;  
    }  
    return 0;  
}

总结:

这个问题涉及到了数论中的余数性质以及鸽巢原理的应用。需要对余数的性质有一定的了解,以及如何通过取模运算来处理问题。但我的代码没有直接地用到鸽巢原理。利用了unordered set来存储计算得到的余数,用于快速查找重复的余数。使用无序集合可以确保不会存储重复的余数,并且能够在 O(1) 时间复杂度内完成查找操作,从而提高了程序的效率。

提一下鸽巢原理:

鸽巢原理的基本思想是,如果有 (n) 只鸽子和 (m) 个鸽巢,当 (n > m) 时,至少有一个鸽巢中有多只鸽子。在数论中,当我们考虑余数时,这个原理同样适用:如果对 (m) 个不同的除数取模运算,那么最多会产生 (m) 种不同的余数(从 0 到 (m-1))。如果除数的数量超过了 (m),那么根据鸽巢原理,就必然会有至少一个余数重复。

标签:取模,P8807,int,余数,蓝桥,鸽巢,集合,原理
From: https://blog.csdn.net/morantneymarstep/article/details/139702084

相关文章

  • 第十一届蓝桥杯大赛软件类决赛 Java A 组
    文章目录发现宝藏【考生须知】发现宝藏前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。第十一届蓝桥杯大赛软件类决赛JavaA组【考生须知】考试开始后,选手首先下载题目,并使用考场现场公布的解压密码......
  • 【力扣真题】3.哈希表|算法真题程序设计数据结构考研保研复试机试面试秋招春招蓝桥杯
    242.有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:输入:s=“anagram”,t=“nagaram”输出:true示例2:输入:s=“rat”,t=“car”输出:false说明:你可以假设字符串只包含小写字母。力扣题目链接思......
  • 蓝桥杯十五届国赛模拟题1答案
    1、bug缺陷报告功能名称缺陷描述操作步骤预期结果实际结果缺陷级别销售订单列表在销售订单列表页面,模糊查询失败1、成功进入订单管理界面->点击【销售订单列表】按钮;2、单据编码输入订单模糊信息;3、点击搜索按钮;3、观察销售订单列表页面;列表显示符合条件数据......
  • 蓝桥杯软件测试第十五届蓝桥杯模拟赛1期题目解析
    PS需要第十五界蓝桥杯模拟赛1期功能测试模板、单元测试被测代码、自动化测试被测代码请加......
  • 蓝桥等考Python组别十六级07(区间合并)
    蓝桥等考Python组别十六级007第一部分:选择题1、PythonL16(15分)a和b是两个集合,a|b表示a和b的(  )。交集并集子集差集正确答案:B2、PythonL16(15分)运行下面程序,输出的结果是(  )。s=set([5,1,5,5,1,2])print(len(s))3456正确答案:A3、PythonL16(20......
  • 免费,C++蓝桥杯比赛历年真题--第14届蓝桥杯省赛真题(含答案解析和代码)
    C++蓝桥杯比赛历年真题–第14届蓝桥杯省赛真题一、选择题答案:A解析:C++中bool类型与char类型一样,都需要1byte。一些其他类型的占用字节数:short:2byte,int:4byte,longlong:8byte,double:8byte,故答案为A。答案:C解析:A中结构体中可以定义成员变量,也可以定义只有该结......
  • 第十一届蓝桥杯大赛软件类决赛 Java B 组
    文章目录发现宝藏【考生须知】试题A:美丽的2试题B:扩散试题C:阶乘约数试题D:本质上升序列试题E玩具蛇试题F蓝肽子序列试题G皮亚诺曲线距离试题H:画廊试题I:补给试题J质数行者发现宝藏前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍......
  • 打卡信奥刷题(60)用Scratch图形化工具信奥P10424 [普及组] [蓝桥杯 2024 省 B] 好数,写
    [蓝桥杯2024省B]好数题目描述一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。给定一个正整数N......
  • P8724 [蓝桥杯 2020 省 AB3] 限高杆
    原题链接题解分层图,太奥妙了每层图都是一样的\(d=0\)的边建的图,\(d=1\)就像梯子,可以去上一层走,总共有三层code#include<bits/stdc++.h>usingnamespacestd;#definelllonglonginlinevoidread(ll&x){x=0;llflag=1;charc=getchar();......
  • P8779 [蓝桥杯 2022 省 A] 推导部分和
    原题链接题解1.集合+搜索2.把数字看成间隔而不是点3.类似于差分约束,这里的建边意味着相对大小,根据传递性可知,如果ab建边,bc建边,那么ac之间的关系也能确定,可以用搜索维护所以unknown代表两个点没有之间或者间接的边相连,可以用集合维护code#include<bits/stdc++.h>#definel......