题目: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]矩阵游戏——费马小定理+推式子的更多相关文章

  1. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 123   Solved: 73 [ Submit][ St ...

  2. BZOJ 3240 [Noi2013]矩阵游戏 ——费马小定理 快速幂

    发现是一个快速幂,然而过不去. 怎么办呢? 1.十进制快速幂,可以用来练习卡时. 2.费马小定理,如果需要乘方的地方,可以先%(p-1)再计算,其他地方需要%p,所以需要保存两个数. 然后就是分类讨论 ...

  3. M斐波那契数列(矩阵快速幂+费马小定理)

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  4. HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)

    M斐波那契数列 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submi ...

  5. HDOJ 4549 M斐波那契数列 费马小定理+矩阵高速幂

    MF( i ) = a ^ fib( i-1 ) * b ^ fib ( i )   ( i>=3) mod 1000000007 是质数 , 依据费马小定理  a^phi( p ) = 1 ( ...

  6. HDU 4549 (费马小定理+矩阵快速幂+二分快速幂)

    M斐波那契数列 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Statu ...

  7. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Li ...

  8. 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; ...

  9. [HDOJ5667]Sequence(矩阵快速幂,费马小定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5667 费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p). 即 ...

随机推荐

  1. kubeadmin 安装k8s集群

    系统设置 CentOS Linux release 7.6.1810 (Core) 修改主机名 vim /etc/hostname k8s-master hostname -F /etc/hostna ...

  2. relax 网站

    1. Calm 网站链接:http://www.calm.com/ 这个网站就像它的名字一样“平和”,网站的设计是通过自然图片(阳光下的暖流.流淌的消息等)与缓缓的音乐相结合,帮你在短时间内即可放松下 ...

  3. 【nginx】记录nginx+php-fpm实现大文件下载排坑的过程

    先上一段代码,支持大文件下载和断点续传,代码来源互联网. set_time_limit(0); // 省略取文件路径的过程,这里直接是文件完整路径 $filePath = get_save_path( ...

  4. 洛谷 1062 NOIP2006普及T4 数列

    [题解] 鲜活的水题..我们把数列换成k进制的,发现数列是001,010,011,100,101,110,111...,而第m项用k进制表示的01串刚好就是m的二进制的01串.于是我们预处理k的幂,把 ...

  5. L2-012. 关于堆的判断(STL中heap)

    L2-012. 关于堆的判断   将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ...

  6. 【12】AngularJS 事件

    AngularJS 事件 AngularJS 有自己的 HTML 事件指令. ng-click 指令 ng-click 指令定义了 AngularJS 点击事件. <div ng-app=&qu ...

  7. 我安装android studio的过程与经历

    虽然android studio已经出来两年多了,但是我一直都没真正用过.之前用Eclipse还算用得挺好.我并不是一个专职的android开发者,我是个游戏开发者,打包的时候要用到android.不 ...

  8. Leetcode 79.单词搜索

    单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单 ...

  9. Spark在Executor上的内存分配

    spark.serializer (default org.apache.spark.serializer.JavaSerializer )    建议设置为 org.apache.spark.ser ...

  10. RCC 2014 Warmup (Div. 2) 蛋疼解题总结

    A. Elimination time limit per test 1 second memory limit per test 256 megabytes input standard input ...