bzoj3240 [Noi2013]矩阵游戏——费马小定理+推式子
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3240
n 和 m 太过巨大,不难想到应该用费马小定理什么的来缩小范围;
总之就是推式子啦,看博客:https://blog.csdn.net/jiangshibiao/article/details/24594825
还有:https://www.cnblogs.com/iiyiyi/p/5617598.html
其实也蛮好推的,也挺好写,但我调了很久很久啊...
要十分注意取 mod 时候加括号的艺术...
还要注意指数里的 n 或 m 取的是 mod-1 的模,就是费马小定理。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int const maxl=1e6+;
ll a,b,c,d,mod=1e9+,A,B,tmp;
char nn[maxl],mm[maxl];
struct N{ll ord,uni;}n,m;
void get()
{
int l=strlen(nn);
// for(int i=l-1;i>=0;i--)//傻了
for(int i=;i<l;i++)
{
n.ord=(n.ord*%mod+nn[i]-'')%mod;//a=1
n.uni=(n.uni*%(mod-)+nn[i]-'')%(mod-);//a!=1
}
l=strlen(mm);
// for(int i=l-1;i>=0;i--)
for(int i=;i<l;i++)
{
m.ord=(m.ord*%mod+mm[i]-'')%mod;//a=1
m.uni=(m.uni*%(mod-)+mm[i]-'')%(mod-);//a!=1
}
}
ll pw(ll a,ll b)
{
ll ret=;
for(;b;b>>=1ll,(a*=a)%=mod)
if(b&) (ret*=a)%=mod;
return ret;
}
ll ni(ll x){return pw(x,mod-);}
int main()
{
scanf("%s%s",&nn,&mm);
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
get();
if(a==)
{
B=(((c*b)%mod*(m.ord-))%mod+d)%mod;
if(c==)tmp=(+n.ord*B)%mod;
else tmp=(pw(c,n.uni)+((B*(pw(c,n.uni)-)%mod)*ni(c-))%mod)%mod;//注意指数部分是uni而非ord!!!
}
else
{
A=(pw(a,m.uni-)*c)%mod;
B=(((((pw(a,m.uni-)-)*ni(a-))%mod*c)%mod*b)%mod+d)%mod;
tmp=(pw(A,n.uni)+(((pw(A,n.uni)-)*ni(A-))%mod*B)%mod)%mod;
}
printf("%lld",((tmp-d)*ni(c)%mod+mod)%mod);//+mod %mod
return ;
}
bzoj3240 [Noi2013]矩阵游戏——费马小定理+推式子的更多相关文章
- BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 123 Solved: 73 [ Submit][ St ...
- BZOJ 3240 [Noi2013]矩阵游戏 ——费马小定理 快速幂
发现是一个快速幂,然而过不去. 怎么办呢? 1.十进制快速幂,可以用来练习卡时. 2.费马小定理,如果需要乘方的地方,可以先%(p-1)再计算,其他地方需要%p,所以需要保存两个数. 然后就是分类讨论 ...
- M斐波那契数列(矩阵快速幂+费马小定理)
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)
M斐波那契数列 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submi ...
- HDOJ 4549 M斐波那契数列 费马小定理+矩阵高速幂
MF( i ) = a ^ fib( i-1 ) * b ^ fib ( i ) ( i>=3) mod 1000000007 是质数 , 依据费马小定理 a^phi( p ) = 1 ( ...
- HDU 4549 (费马小定理+矩阵快速幂+二分快速幂)
M斐波那契数列 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
- HDU 5667 Sequence 矩阵快速幂+费马小定理
题目不难懂.式子是一个递推式,并且不难发现f[n]都是a的整数次幂.(f[1]=a0;f[2]=ab;f[3]=ab*f[2]c*f[1]...) 我们先只看指数部分,设h[n]. 则 h[1]=0; ...
- [HDOJ5667]Sequence(矩阵快速幂,费马小定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5667 费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p). 即 ...
随机推荐
- 事件的节流(throttle)与防抖(debounce)
事件的节流(throttle)与防抖(debounce) 有些浏览器事件可以在短时间内快速触发多次,比如调整窗口大小或向下滚动页面.例如,监听页面窗口滚动事件,并且用户持续快速地向下滚动页面,那么滚动 ...
- Python orm基础
ORM 对象映射关系程序. 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sq ...
- 完善本地搭建的jekyll环境(Windows)
序:上篇文章虽然在本地搭建好了jekyll环境,但是却存在一些问题,如通过jekyll new创建的站点无法正常跑起来.中文编码有问题.这说明之前搭建的环境有不周之处. PS:因之前自己搭建环境时并未 ...
- iframe子页面操作父页面并实现屏蔽页面弹出层效果
- Reading Lists
* Non-academic 1. Slowing Down to the Speed of Life, by Richard Carlson and Joseph Bailey.2. Your Mo ...
- BZOJ 1827 洛谷 2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gather
[题解] 很容易想到暴力做法,枚举每个点,然后对于每个点O(N)遍历整棵树计算答案.这样整个效率是O(N^2)的,显然不行. 我们考虑如果已知当前某个点的答案,如何快速计算它的儿子的答案. 显然选择它 ...
- 2.5.4 华丽的 printf 输出
如同echo命令,printf命令可以输出简单的字符串: [many@avention my_sh]$ printf "Hello, world\n" ...
- How to put username &password in MongoDB(Security&Authentication)?(配置用户认证在MongoDB)
Default do not need username and password authenticate when access mongoDB ,I want to set up the use ...
- Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError解决
场景:将Eclipse的可以运行的项目转到IDEA发现一个奇怪的错误 今天用IDEA2018.1运行SpringBoot项目报错如下: Error:java: Internal compiler er ...
- codevs1314 寻宝
题目描述 Description 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共 ...