当前位置: 首页 > news >正文

题目 2701: 蓝桥杯2022年第十三届决赛真题-取模(C/C++/Java组)

题目 2701: 蓝桥杯2022年第十三届决赛真题-取模(C/C++/Java组)
时间限制: 3s 内存限制: 512MB 提交: 6633 解决: 1263
题目描述
给定 n, m ,问是否存在两个不同的数 x, y 使得 1 ≤ x < y ≤ m 且 n mod x = n mod y 。

输入格式
输入包含多组独立的询问。

第一行包含一个整数 T 表示询问的组数。

接下来 T 行每行包含两个整数 n, m,用一个空格分隔,表示一组询问。

输出格式
输出 T 行,每行依次对应一组询问的结果。如果存在,输出单词 Yes;如果不存在,输出单词 No。

样例输入复制
3
1 2
5 2
999 99
样例输出复制
No
No
Yes
提示
对于 20% 的评测用例,T ≤ 100 ,n, m ≤ 1000;

对于 50% 的评测用例,T ≤ 10000 ,n, m ≤ 105;

对于所有评测用例,1 ≤ T ≤ 105 ,1 ≤ n ≤ 109 ,2 ≤ m ≤ 109。

1.分析

        1.对于偶数,m>=2就行,x为1,y为2。

        2.对于奇数,循环找到x,y。记录余数的个数,为2的话就break。

        3.用scanf可以过,cin不能过。

2.代码

#include<iostream>
#include<map>
using namespace std;
typedef long long LL;
const int MAX = 1e5 + 10;
int n, m,T;
bool check(int x) {map<int, int> s;for (int i = 1; i <= m; i++) {s[n % i]++;                  //记录余数个数if (s[n % i] >= 2) {        //直接结束return true;}}return false;
}
int main() {scanf("%d", &T);while (T--) {scanf("%d%d", &n, &m);if (n % 2 == 0) {if (m >= 2) printf("Yes\n");else printf("No\n");}else {if (m>=23||check(n)) printf("Yes\n");else printf("No\n");}}return 0;
}


http://www.mrgr.cn/news/97979.html

相关文章:

  • 谷歌最近放出大招——推出全新“Agent Development Kit(简称ADK)
  • Windows 图形显示驱动开发-WDDM 2.0功能_上下文监视
  • 嵌入式---烧录器
  • 使用Python从零实现一个端到端多模态 Transformer大模型
  • 蓝桥杯篇---客观题
  • 代码大模型的发展:通义灵码与KwaiCoder的技术探讨
  • ASEG的鉴定
  • RK3568 基于Gstreamer的多媒体调试记录
  • 为什么Java不支持多继承?如何实现多继承?
  • NLP高频面试题(四十)——什么是 BitFit?
  • JavaWeb 课堂笔记 —— 08 请求响应
  • 人工智能之数学基础:复矩阵
  • 《Python星球日记》第22天:NumPy 基础
  • 算法题型讲解
  • 蓝桥杯基础数论入门
  • UE学习记录part15
  • OSPF接口的网络类型和不规则区域
  • 17. git fetch
  • 41、web前端开发之Vue3保姆教程(五 项目实战)
  • 2025年4月7日--4月13日(learn openg+dx+ogre+bullet+ue5肉鸽)