当前位置: 首页 > 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;}
}

相关文章:

  • 每日八股文6.8
  • 通过Cline使用智能体
  • WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
  • DDR供电设计中的VTT与VREF作用和区别
  • 深究二分查找算法:从普通到进阶
  • 【AIGC】RAGAS评估原理及实践
  • 可可·香奈儿 活出自己
  • 使用Mathematica实现Newton-Raphson收敛速度算法(简单高阶多项式)
  • Beckhoff(倍福) -- MES(ITAC) TCP 通讯
  • Wise Disk Cleaner:免费高效的系统清理专家
  • C++课设:从零开始打造影院订票系统
  • Java中的抽象类
  • 2.1.3_2 编码和调制(下)
  • 用 DeepSeek 创作一首属于自己的歌
  • 图的邻接表存储及求邻接点操作
  • 【QT】QT多语言切换
  • 极客时间:在 Google Colab 上尝试 Prefix Tuning
  • 01.SQL语言概述
  • 算法-构造题
  • CSS悬停闪现与a标签嵌套的问题
  • 手机客户端网站怎么做/软文代写是什么
  • wordpress主题知言/seo下拉优化
  • 重庆哪家公司做网站好/夫唯seo视频教程
  • 网站做换肤/百度风云搜索榜
  • 湖北响应式网站建设设计/免费学生网页制作成品
  • 网站建设维护问题/网站搜索排优化怎么做