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

算法-数论

 C-小红的数组查询(二)_牛客周赛 Round 95

 思路:不难看出a数组是有循环的

d=3,p=4时,a数组:1、0、3、21、0、3、2.......  最小循环节为4,即最多4种不同的数

d=4,p=6时,a数组:1、5、31、5、3.......最小循环节为3

d=4,p=10时,a数组:1、5、9、3、71、5、9、3、7.......最小循环节为5

可以得出,最小循环节T=p / gcd(d,p)

 

ans=min(询问的区间长度,最小循环节)

ans=min(r-l+1,T)

特殊情况:p=1时,a数组:1、0、0、0........(任何数对1取模均为0)

l=1,r>1时,ans=2

其余,ans=1

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {ll d,p,q;cin>>d>>p>>q;// 将d对p取模,因为后续的计算是基于模p的d = d % p;// 计算d和p的最大公约数gll g = __gcd(d, p);// 计算T,即周期长度,T = p / gll T = p / g;// 处理q次询问while (q--) {ll l, r;cin >> l >> r;// 特殊情况:如果p == 1,那么所有元素都是0(因为任何数mod 1都是0)if (p == 1) {// 如果区间长度大于1,那么只有0和1两种元素(因为a1=1,其他都是0)ll ans = 1;if (l == 1 && r > 1) {ans++;}cout << ans << endl;continue;}// 计算区间内的元素种类数// 如果区间长度小于T,那么元素种类数就是区间长度,// 否则,元素种类数就是Tcout << min(r - l + 1, T) << endl;}
}

http://www.xdnf.cn/news/936811.html

相关文章:

  • Java线程池核心原理与最佳实践
  • 永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
  • 73常用控件_QFormLayout的使用
  • 一个自动反汇编脚本
  • 深度学习入门Day3--鱼书学习(2)
  • 前端十种排序算法解析
  • 电压型PHY芯片MDI接口设计
  • 计算机网络笔记(二十九)——5.1运输层协议概述
  • QT线程同步 QReadWriteLock并发访问
  • xtp+ctp 交易系统接口简介
  • DAX权威指南9:DAX 查询分析与优化1
  • leetcode 386. 字典序排数 中等
  • Python爬虫实战:研究demiurge框架相关技术
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十)
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • Digital IC Design Flow
  • vue3:十六、个人中心-修改密码
  • bugku 网络安全事件应急响应
  • 02.管理数据库
  • CCPC guangdongjiangsu 2025 F
  • 【创新算法】改进深度优先搜索算法配合二进制粒子群的配电网故障恢复重构研究
  • 食养有方:进行性核上性麻痹患者的健康饮食指南
  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(2)
  • Linux系统防火墙之iptables
  • 工作记录 2017-08-01
  • 若依框架项目前缀配置
  • 如何在最短时间内提升打ctf(web)的水平?
  • Python安装使用教程
  • 实验三:VGA显示实验
  • JavaScript 数据类型详解