——题目出处zhoutb2333

题解:

3e6可以带一个log

又是下取整问题。但是分块会TLE。

这样考虑,我们把式子拆成两个部分。

我们先算出来每一个x的[ai/x]项,再算出来[x/ai]项。之后做和。

[x/ai]:

x和ai的倍数有一些关系。

发现,假设现在x|ai,且x/ai=k, 那么,对于任意的(x~x+ai-1)[x/ai]=k;

所以,我们可以反过来,对于每一个ai,枚举ai的倍数,在ai的每个倍数的位置上++,这个桶叫val

那么,一个x,[x/ai]的值,就是val[1~x]的和!即一个前缀和。

所以我们外层循环i,给ai的倍数打标记 。

但是会被卡,ai=1时,复杂度M^2

所以给ai再开一个桶,cnt[i]表示值为i的ai有多少个。

枚举i的倍数即可,每次val+=cnt[i],一次加了许多个。

复杂度:M*(1/1+1/2+1/3+...1/M)= MlogM

另外一部分:

[ai/x]

ai和x的倍数有一些关系。

这次就考虑外层枚举x,思路和上面差不多。

枚举x的每一个倍数j,k=j/x,

那么,对于数值在(k*x,k*x+x-1)的区间内的所有的ai,[ai/x]=k

把刚才那个桶cnt,进行一个前缀和。

所以,对于这个x,每个倍数j的贡献是:(sum(k*x+x-1)-sum(k*x-1))*k

复杂度同上。

然后两边做和就可以了。

注意:脑残的一点:n大于2e5的手动构造,mod M再加1,不是mod(M+1)

显然啊,Ai数值不能是(0,M)的,而是(1,M)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=+;
ll n,m;
ll a[N];
ll cnt[N],tot;
ll val[N];
ll lp[N];
ll s[N];
int main()
{
scanf("%lld%lld",&n,&m);
if(n<2e5){
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
cnt[a[i]]++;
}
}
else{int t;
scanf("%lld",&a[]);
cnt[a[]]++;
for(int i=;i<=n;i++){
a[i]=(1LL*a[i-]*a[i-]+1LL**a[i-]+)%m+;
cnt[a[i]]++;
}
}
for(int i=;i<=m;i++){
s[i]=s[i-]+cnt[i];
if(!cnt[i]) continue;
for(int j=i;j<=m;j+=i){
val[j]+=cnt[i];
}
}
//for(int i=1;i<=m;i++){
/// cout<<s[i]<<endl;
//}
for(int i=;i<=m;i++){
for(int j=i;j<=m;j+=i){
lp[i]+=(s[min((ll)j+i-,m)]-s[j-])*(j/i);
}
}
ll ans=;
for(int i=;i<=m;i++){
val[i]+=val[i-];
//cout<<val[i]<<" "<<lp[i]<<endl;
ans^=(lp[i]+val[i]);
}
printf("%lld",ans);
return ;
}

EOJ 262 润清的烦恼的更多相关文章

  1. 关于[x/y]一些小想法

    [x/y],即x除以y下取整 (不会LATEX) 1.对于给定的x,对于所有的1<=y<=x, [x/y]一共有√x种取值. 证明: 对于y<=√x,y有根号种,所以值最多根号种.对 ...

  2. 45.更新一下scrapy爬取工商信息爬虫代码

    这里是完整的工商信息采集代码,不过此程序需要配合代理ip软件使用.问题:1.网站对ip之前没做限制,但是采集了一段时间就被检测到设置了反爬,每个ip只能访问十多次左右就被限制访问.2.网站对请求头的检 ...

  3. 一个DBA萌新的烦恼

    莫名其妙也好机缘巧合也罢,现在我成为了一名MySQL DBA. 为什么: 1.为什么leader让我转到DBA? 首先,我本身学习运维管理的时候就接触过数据库(mysql,redis),算是自身的优势 ...

  4. 《代码整洁之道 中文版》高清 PDF 电子书下载

    代码整洁之道.PDF 下载 代码整洁之道.PDF 中文版 高清 PDF  电子书下载 代码整洁之道下载  点我下载 作者简介  · · · · · · Robert C. Martin,Object ...

  5. HarmonyOS 润和 HiSpark开发套件 免费领!

    让人期盼已久的HarmonyOS 2.0终于在9月10日正式上线啦! 这是一件让众多开发者关注的大事件! 相信不少开发者都已经迫不及待的想上手实操了, 为了满足大家的好奇心, 也希望能有更多开发者了解 ...

  6. 实时 + 高清 + 超压缩,阿里云视频云发布业内首款 VVC 编码器 Ali266

    基于新一代国际视频编解码标准 H.266/VVC,阿里云视频云近日发布了实时高清编码器 Ali266,有力推动 H.266/VVC 标准应用的落地,真正开启 H.266/VVC 的商用之路,并强力赋能 ...

  7. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  8. 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係

    我常常不仅仅逛 博客园,还会去找国外,特别是台湾的技术部落格,发现好的文章,我便会收录,今天我转载或者全文复制,在Google 博客园,一位叫保哥, 釐清 CLR..NET.C#.Visual Stu ...

  9. CPU阿甘之烦恼

    转自“码农翻身”公共号,原文地址CPU阿甘之烦恼 总结:(程序加载到内存运行的演变过程) 内存存放程序.OS负责加载程序到内存.CPU负责运行内存中的程序 1.串行:加载一个完整程序到内存,CPU运行 ...

随机推荐

  1. ubuntu下修改nginx的进程数

    1. 进入nginx配置文件:vim /etc/nginx/nginx.conf2. 将events下的worker_processes 修改为 你希望的数字,保存文件并退出3. 重启nginx: s ...

  2. python将response中的cookies加入到header

    url = “http://abad.com”header = { "user-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64 ...

  3. centos安装eclise启动报错

    A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail http://blog.csdn.net/u0 ...

  4. Nginx是如何配置为 Web 服务器的【转载】

    详解 Nginx是如何配置为 Web 服务器的 林涛 发表于:2016-11-29 23:23 分类:WebServer 标签:Nginx,web,web服务器 521次 抽象来说,将 Nginx 配 ...

  5. Structs2笔记③--局部类型转换案例

    Structs2的类型转换-局部类型转换 Ognl强大的表达式语言,在导入项目的时候我们导入了ognl.jar包,内有TypeConverter类,struct主要依赖于他进行类型转换. 例子   i ...

  6. DPDK实例程序:testpmd

    用户手册:https://doc.dpdk.org/guides/testpmd_app_ug/index.html 还不错的入门:http://syswift.com/188.html 我的运行情况 ...

  7. 2016011998+sw

    Coding.net原码仓库地址:https://git.coding.net/laolaf/sw.git 目录 1 需求分析 2 功能设计 3 设计实现 4 算法详解 5 测试运行 6 满意代码 1 ...

  8. PAT 1067 试密码

    https://pintia.cn/problem-sets/994805260223102976/problems/994805266007048192 当你试图登录某个系统却忘了密码时,系统一般只 ...

  9. Windows下获取文件的md5码的方法

    1.certutil 命令简介 本来想找一个工具 算一个文件的md5 或者是sha 值来着. 找到一个说法是 可以使用 windows 自带的命令行来处理 具体命令 certutil -hashfil ...

  10. RPM 安装oracle18c 修改字符集的方法

    1. 安装完preinstall 和 oracle 的rpm版本之后 到这个界面 rpm -ivh oracle-database-preinstall-18c-.el7.x86_64.rpm war ...