[HG]AK 题解
前言
什么鬼畜玩意,扶我起来,我要用__int128,这辈子都不珂能用龟速乘的...
真香。
题解
我们知道这个模数是个神奇的东西
\(2305843008676823040 = 2^{29} \times 3 \times 5 \times 17 \times 65537\)
所以\(\varphi(2305843008676823040) = 2^{28} \times 2 \times 2^2 \times 2^4 \times 2^{16} = 2^{51}\)
\(a^{\varphi(n)}=1\ (mod\ n)\),所以在\(60\)次以内,该数\(mod 2305843008676823040\)一定会变为\(1\)。
用线段树维护序列,再加一个龟速乘,解决问题
#include <cstdio>
#define ll long long
const ll MOD = 2305843008676823040ll;
ll s[1000001];
bool flg[1000001];
long long read(){
long long x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}
inline ll mul(ll x, ll y){
ll res = 0;
for ( ; y; y >>= 1ll, (x <<= 1ll) %= MOD)
if(y & 1)
(res += x) %= MOD;
return res;
}
void build(int pos, int l, int r){
if (l == r){
s[pos] = read();
flg[pos] = ((s[pos] == 1 || !s[pos]) ? 1 : 0);
return ;
}
int mid = (l + r) >> 1;
build(pos << 1, l, mid);
build(pos << 1 | 1, mid + 1, r);
flg[pos] = flg[pos << 1] & flg[pos << 1 | 1];
s[pos] = (s[pos << 1] + s[pos << 1 | 1]) % MOD;
}
ll query(int pos, int l, int r, int x, int y){
if (x <= l && r <= y && flg[pos])
return s[pos];
if (l == r){
ll res = s[pos];
ll tmp = mul(s[pos], s[pos]);
if (tmp == s[pos])
flg[pos] = 1;
s[pos] = tmp;
return res;
}
int mid = (l + r) >> 1;
ll res;
if (y <= mid)
res = query(pos << 1, l, mid, x, y);
else if (x > mid)
res = query(pos << 1 | 1, mid + 1, r, x, y);
else{
res = query(pos << 1, l, mid, x, y);
(res += query(pos << 1 | 1, mid + 1, r, x, y)) %= MOD;
}
s[pos] = (s[pos << 1] + s[pos << 1 | 1]) % MOD;
flg[pos] = flg[pos << 1] & flg[pos << 1 | 1];
return res
}
int main(){
int n = read(), m = read();
for (register int i = 1; i <= 1000000; ++i) flg[i] = 1;
build(1, 1, n);
while (m--){
int l = read(), r = read();
ll res = query(1, 1, n, l, r) % MOD;
printf("%lld\n", res);
}
return 0;
}
[HG]AK 题解的更多相关文章
- [HG]Market 题解
题目描述 在比特镇一共有 \(n\) 家商店,编号依次为 \(1\) 到 \(n\). 每家商店只会卖一种物品,其中第 \(i\) 家商店的物品单价为 \(c_i\),价值为 \(v_i\),且该商店 ...
- [HG]walk 题解
前言 学长博客划水,抄题解,差评. 于是我来重新写一篇正常的题解,虽然解法跟标程不一样,但是复杂度是一样的. 题面 题目描述 在比特镇一共有\(n\)个街区,编号依次为\(1\)到\(n\),它们之间 ...
- URAL 2047 Maths 打表 递推
MathsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action? ...
- 「kuangbin带你飞」专题十九 矩阵
layout: post title: 「kuangbin带你飞」专题十九 矩阵 author: "luowentaoaa" catalog: true tags: mathjax ...
- [HG]子树问题 题解
前言 模拟赛赛时SubtaskR3没开long long丢了20分. 题意简述 题目描述 对于一棵有根树(设其节点数为 \(n\) ,则节点编号从 \(1\) 至 \(n\) ),如果它满足所有非根节 ...
- 【题解】小X的AK计划
题目描述 虽然在小X的家乡,有机房一条街,街上有很多机房.每个机房里都有一万个人在切题.小X刚刷完CodeChef,准备出来逛逛.机房一条街有n个机房,第i个机房的坐标为xi,小X的家坐标为0.小X在 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- [HG]走夜路 题解
前言 整个机房就我一个人在想动态规划. 想了半天发现一堆性质,结果由于DP中出现折线挂了. 题目描述 某NOIP普及组原题加强版. \(Jim\) 非常怕黑,他有一个手电筒,设手电筒的电量上限为 \( ...
- [HG]腿部挂件 题解
前言 暴力跑的比正解快. 以下暴力(循环展开+fread读入输出优化) #include<cstdio> #pragma GCC optimize(3, "Ofast" ...
随机推荐
- 【ABAP系列】SAP ABAP POPUP_TO_CONFIRM 弹出框总结
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP POPUP_T ...
- 解决org.apache.subversion.javahl.ClientException的方法【】
重新刷新项目,配置项目,总是报“The project was not built due to "org.apache.subversion.javahl.ClientException” ...
- Mybatis—动态sql拼接问题
背景:使用Mybatis的最近半年,经常发现一些小坑,现在总结回顾下,记个小本本,不让它再来欺负我! 百度了许久,才留心到官网文档,比我的全,我很菜的! *************<if> ...
- 极*Java速成教程 - (5)
Java语言基础 容器 这个世界是有序的,将Java对象零散地放到内存中是不符合世界常理的,特别是有一大组相似的甚至不知道有多少数据的时候.把Java对象装进盒子里可以有序收纳,这个盒子就叫容器. 初 ...
- You-Get,多网站视频下载工具,非常方便
You-Get是一个非常优秀的网站视频下载工具.使用You-Get可以很轻松的下载到网络上的视频.图片及音乐. 按Win+R键打开运行,输入cmd,再输入命令 pip install you-get, ...
- 手摸手教你如何在 Python 编码中做到小细节大优化
手摸手教你如何在 Python 编码中做到小细节大优化 在列表里计数 """ 在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算. &qu ...
- Maven快速安装配置
环境:windows7_x86 maven3.3.3 maven是管理项目的常用工具,不用安装,直接配置即可.在配置maven前,需要先安装JDK. 1,安装JDK(注意此版本的Maven要 ...
- 出现( linker command failed with exit code 1)错误总结(http://blog.csdn.net/hengshujiyi/article/details/21182813)
这种问题,通常出现在添加第三方库文件或者多人开发时. 这种问题一般是找不到文件而导致的链接错误. 我们可以从如下几个方面着手排查. 1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误. ...
- 把excel中的数据导入到Oracle数据库中
从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...
- netperf编译./configure时报错 "error: cannot guess build type;you nust specify one"
问题: 解决办法-亲测可用: 尝试:./configure --build=mingw提示无法辨别 checking build system type... Invalid configuratio ...