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). 即 ...
随机推荐
- java中的数学函数Math方法记录
1,三角函数与属性Math.sin() -- 返回数字的正弦值Math.cos() -- 返回数字的余弦值Math.tan() -- 返回数字的正切值Math.asin() -- 返回数字的反正弦值M ...
- 【转】Flex 布局
网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...
- EasyUI Datagrid的简单使用
此前同样写过EasyUI Datagrid的demo,好记性不如烂笔头,何况记性也不是那么好,赶紧记录一下.照搬上一篇EasyUI Tree的格式. 实现效果:获取数据库表的数据,在EasyUI Da ...
- 完美解决在Servlet中出现一个输出中文乱码的问题
@Override public void doPost(HttpServletRequest reqeust, HttpServletResponse response) throws Servle ...
- How Can You Tell the Difference Between LINQ Methods and Query Builder Methods?
LINQ's method syntax looks very similar to the query builder methods,except for one big difference:t ...
- 【Codeforces 411A】Password Check
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 傻逼模拟题 [代码] import java.io.*; import java.util.*; public class Main { st ...
- Css学习总结(3)——CSS布局解决方案 - 水平、垂直居中、多列布局、全屏布局
居中布局 水平居中 子元素于父元素水平居中且其(子元素与父元素)宽度均可变. inline-block + text-align <div class="parent"> ...
- vue 添加axios解决post传参数为null问题
本文主要参考: https://www.npmjs.com/package/axios http://jingyan.baidu.com/article/29697b916d6a7bab20de3cf ...
- A - 不容易系列之(3)―― LELE的RPG难题 简单递推
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研 ...
- iptables中增加/删除/查询/修改的基本操作
虽然在Ubuntu使用了UFW来简化iptables的操作,但是UFW只针对防火墙方面,转发方面没有涉及,所以要弄懂其中的原理,还是必须回归到iptables中.CentOS也是如此.下面是针对ipt ...