题目背景

大样例下发链接: https://pan.baidu.com/s/1nuVpRS1 密码: sfxg

注意:本题大样例4的输出文件修改为 https://pan.baidu.com/s/1bUWuZW

奈芙莲·卢可·印萨尼亚(Nephren-Ruq-Insania)

同为妖精仓库的成体妖精兵,天赋不如珂朵莉一般,只是一个平凡的妖精.

睡觉时如同毯子一般在威廉身上为其保暖。习惯于粘着威廉,在梦境中与艾尔梅莉亚交谈时,自称就像是威廉的宠物一样。

本题题面中含有大量的剧透,建议做题之前将这部番剧看完(

题目描述

她只是一个非常普通的黄金妖精。

在援救打捞队的作战中,他们不幸与(几乎是所有的)第六兽相遇了。

此时的珂朵莉因为接触到星神艾露可本体,正处于昏迷之中。而威廉也无法离开珂朵莉。

默默守护在房间外的她,提起圣剑,走向了战场。

作为本身天赋只是一般的妖精少女,她难以对抗无数倍于自己的六号兽。

没有多久,她开始体力不支。

终于,在源源不断的六号兽面前,她难以抵挡了……

终于,由于魔力过度激发,她已经处在了魔力失控的边缘……

”威廉,拯救,是我们黄金妖精的使命。“

”况且,威廉之前已经救过我们了。“

”所以,已经没有问题了。“

威廉想要救下奈芙莲,但是他自己也已经处于崩溃的边缘。

冥冥之中他想起了曾经学习过的一种魔法。在这最后一刻,或许已经是唯一的办法了。

这种魔法操作的对象是一个咒语组成的序列,每一个单独的咒语拥有自己的法力值。

威廉需要不断地按照之前的记忆,对某一段区间的法力值加上一个数,或者求出某一段区间的法咒共鸣。

分析:这道题部分分还是比较多的.第一个数据点看起来数据非常小,但是3^3^3^3^3mod p会算不出来,因为次数很大,不能直接对次数取模.怎么将次数变小呢?欧拉定理! ,可以发现如果这道题就是不断地使用欧拉定理,直到φ(p)变成1或者计算完整个区间,这实际上就是一个递归的过程.用线段树进行区间修改,单点查询。

有几个地方需要注意:

1.如果区间[l,r]中第x位是1,那么[x,r]都不需要考虑了,因为1^n = 1.

2.欧拉定理成立的条件是x >= φ(p),而由于忽略0和1的情况,2^2^2^2^2就足以满足数据范围了,所以暴力枚举5位乘起来看看是不是>=φ(p)就可以了.如果<φ(p)就可以直接算,而不需要欧拉定理了.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int maxn = ; int n, m, prime[], phi[], cnt, flag[maxn];
long long tag[maxn << ], c[maxn << ], a[maxn], L[maxn << ], R[maxn << ];
bool vis[]; void init()
{
phi[] = ;
for (int i = ; i <= ; i++)
{
if (!vis[i])
{
prime[++cnt] = i;
phi[i] = i - ;
}
for (int j = ; j <= cnt; j++)
{
int t = i * prime[j];
if (t > )
break;
vis[t] = ;
if (i % prime[j] == )
{
phi[t] = phi[i] * prime[j];
break;
}
phi[t] = phi[i] * (prime[j] - );
}
}
} void pushup(int o)
{
c[o] = c[o * ] + c[o * + ];
} void pushdown(int o)
{
if (tag[o])
{
tag[o * ] += tag[o];
tag[o * + ] += tag[o];
c[o * ] += (R[o * ] - L[o * ] + ) * tag[o];
c[o * + ] += (R[o * + ] - L[o * + ] + ) * tag[o];
}
tag[o] = ;
} void build(int o, int l, int r)
{
L[o] = l;
R[o] = r;
if (l == r)
{
c[o] = a[l];
return;
}
int mid = (l + r) >> ;
build(o * , l, mid);
build(o * + , mid + , r);
pushup(o);
} void update(int o, int l, int r, int x, int y, int v)
{
if (x <= l && r <= y)
{
tag[o] += v;
c[o] += v;
return;
}
pushdown(o);
int mid = (l + r) >> ;
if (x <= mid)
update(o * , l, mid, x, y, v);
if (y > mid)
update(o * + , mid + , r, x, y, v);
pushup(o);
} long long query(int o, int l, int r, int pos)
{
if (l == r)
return c[o];
pushdown(o);
int mid = (l + r) >> ;
if (pos <= mid)
return query(o * , l, mid, pos);
else
return query(o * + , mid + , r, pos);
} long long Cal(int q)
{
if (flag[q] == m)
return a[q];
flag[q] = m;
return a[q] = query(, , n, q);
} long long qpow(long long a, long long b, long long mod)
{
a %= mod;
long long res = ;
while (b)
{
if (b & )
res = (res * a) % mod;
a = (a * a) % mod;
b >>= ;
}
return res;
} long long jisuan(int l, int r, int mod)
{
if (mod == )
return ;
if (l == r)
{
long long t = Cal(l);
if (t < mod) //直接算
return t % mod;
else
return (t % mod) + mod;
}
int minn = min(n, l + );
for (int i = l + ; i <= minn; i++)
if (Cal(i) == )
{
minn = i;
break;
}
long long p = Cal(minn), tot = ;
for (int i = minn - ; i >= l + ; i--)
{
tot = p;
p = ;
while (tot--)
{
p *= Cal(i);
if (p >= phi[mod])
return qpow(Cal(l) % mod, jisuan(l + , r, phi[mod]) + phi[mod], mod);
}
}
return qpow(Cal(l) % mod, jisuan(l + , r, phi[mod]), mod);
} int main()
{
memset(flag, -, sizeof(flag));
init();
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
scanf("%lld", &a[i]);
build(, , n);
while (m--)
{
int op, l, r, mod;
scanf("%d%d%d%d", &op, &l, &r, &mod);
if (op == )
update(, , n, l, r, mod);
else
printf("%lld\n", jisuan(l, r, mod) % mod);
} return ;
}

noip模拟赛 Nephren Ruq Insania的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. Asp.Net中调用存储过程并返回输出参数

    /// <summary> /// 调用存储过程返回参数 /// </summary> /// <param name="orderId">&l ...

  2. iOS Programming Web Services and UIWebView

    iOS Programming Web Services and UIWebView The work is divided into two parts. The first is connecti ...

  3. iOS Programming Introduction to Auto Layout 自动布局

    iOS Programming Introduction to Auto Layout   自动布局 A single application that runs natively on both t ...

  4. .NET Core MVC Web最最最基础的框架搭建

    1. 使用VS创建.NET Core MVC Web项目 创建完成就是酱紫的了 2. 用NuGet把这些全部都安装了 Install-Package Microsoft.EntityFramework ...

  5. Win10浏览器Spartan无法全屏

    昨天尝鲜win10 Build 10074 msdn pro版,新版微软吹嘘的Spartan浏览器看视频是无法像IE一样全屏的.网上搜索了一下也没有解决方法.不过看到一个可以打开隐藏设置实验功能的方法 ...

  6. CREATE OPERATOR CLASS - 定义一个新的操作符类

    SYNOPSIS CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING index_method AS { OPERATOR ...

  7. bzoj3994: [SDOI2015]约数个数和(反演+结论?!)

    这题做的历程堪称惊心动魄 刚刚学了莫比乌斯反演的我高高兴兴的和cbx一起反演式子 期间有突破,有停滞,有否定 然后苟蒻的我背着cbx偷偷打开了题解 看到了 我...... 去你的有个性质啊(当然还是自 ...

  8. 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)

    之前的jar包有问题,现已修改. 需要的jar包,已修改 自己去Maven中央仓库下载jar包. excel数据: 直接上代码. 程序再度优化了一遍.之后如果想再度精准,可能需要建模,最近没空继续做了 ...

  9. Spring Cloud练习1

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  10. JavaSE-10 多态

    学习要点 多态的优势和应用场合 父类和子类之间的类型转换 instanceof运算符的使用 父类作为方法形参实现多态 父类作为返回值实现多态 使用多态的原因 需求描述: 在宠物管理系统中,宠物饿了,需 ...