思路:容易得到s[n]=s[n-1]+s[n-2],也就是fib数。

求第k小的fib质数的也就是第k个质数数-2,当k>2时。

在就是s[n]/x%m=s[n]%(x*m)/x.

代码如下:

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
#define M 1000005
using namespace std;
ll k,x,m;
int prime[M],cnt;
bool f[*M];
struct mat
{
ll m[][];
};
mat mul(mat a,mat b,ll mod)
{
mat ans;
for(int i=;i<;i++)
for(int j=;j<;j++){
ans.m[i][j]=;
for(int z=;z<;z++)
ans.m[i][j]=(ans.m[i][j]+a.m[i][z]*b.m[z][j])%mod;
}
return ans;
}
ll pw(ll n,ll mod)
{
mat ans,a;
for(int i=;i<;i++)
for(int j=;j<;j++){
ans.m[i][j]=;
a.m[i][j]=;
}
ans.m[][]=;ans.m[][]=;a.m[][]=;
while(n){
if(n&) ans=mul(ans,a,mod);
n>>=;
a=mul(a,a,mod);
}
ll aa=ans.m[][];
ll bb=ans.m[][];
while(){
if(bb%x==) break;
ll t=(aa+bb)%mod;
aa=bb;
bb=t;
}
return bb;
}
void init()
{
cnt=;
for(int i=;i<*M;i++){
if(cnt>=) break;
if(!f[i]) prime[cnt++]=i;
for(int j=;j<cnt&&i*prime[j]<*M;j++){
f[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
ll gcd(ll a,ll b)
{
if(a<b) swap(a,b);
while(b){
ll t=a;
a=b;
b=t%b;
}
return a;
}
ll cal(ll mod)
{
ll a=,b=,c;
if(k==) c=;
else c=;
while(){
if(a>=c&&a%x==) break;
ll t=(a+b)%mod;
a=b;
b=t;
}
return a;
}
int main()
{
int t;
init();
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld",&k,&x,&m);
ll ans,g=x*m;
if(k<=) ans=cal(g);
else ans=pw(prime[k]-,g);
printf("%lld\n",ans/x);
}
return ;
}

ZOJ 3707 Calculate Prime S 数论的更多相关文章

  1. 【斐波拉契+数论+同余】【ZOJ3707】Calculate Prime S

    题目大意: S[n] 表示 集合{1,2,3,4,5.......n} 不存在连续元素的子集个数 Prime S 表示S[n]与之前的所有S[i]互质; 问 找到大于第K个PrimeS 能整除X 的第 ...

  2. 【HDU】2866:Special Prime【数论】

    Special Prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. ZOJ - 3483 - Gaussian Prime

    先上题目: Gaussian Prime Time Limit: 3 Seconds      Memory Limit: 65536 KB In number theory, a Gaussian ...

  4. 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function

    Calculate the Function Problem's Link:   http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCod ...

  5. codeforces 680C C. Bear and Prime 100(数论)

    题目链接: C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. UVA 10140 - Prime Distance(数论)

    10140 - Prime Distance 题目链接 题意:求[l,r]区间内近期和最远的素数对. 思路:素数打表,打到sqrt(Max)就可以,然后利用大的表去筛素数.因为[l, r]最多100W ...

  7. HDOJ 1319 Prime Cuts<数论>

    学会了不难.通过这道题学习了两点: 1:筛选法求素数. 2:在写比较长的程序的时候,给每个功能部分加上注释,思路会更清晰. 题意: 1.题目中所说的素数并不是真正的素数,包括1: 2.需要读懂题意,对 ...

  8. hdu 2114 Calculate S(n) 数论(简单题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2114 自己对数论一窍不通啊现在,做了一道水题,贴出来吧...主要是让自己记住这个公式: 前n项和的立方 ...

  9. zoj3707(Calculate Prime S)解题报告

    1.计算(a/b)%c,其中b能整除a 设a=b*r=(bc)*s+b*t 则(b*t)为a除以bc的余数 r=c*s+t 而 (a/b)%c=r%c=t (a%bc)/b=(b*t)/b=t 所以对 ...

随机推荐

  1. 【洛谷 P1502】 窗口的星星(扫描线)

    题目链接 把每个星星作为左下角,做出长为\(w-0.5\),宽为\(h-0.5\)的矩形. \(-0.5\)是因为边框上的不算. 离散化\(y\)坐标. 记录\(2n\)个\(4\)元组\((x,y1 ...

  2. stanfordCorenlp在python3中的安装使用+词性学习

    1 安装 前言 Stanford CoreNLP的源代码是使用Java写的,提供了Server方式进行交互.stanfordcorenlp是一个对Stanford CoreNLP进行了封装的Pytho ...

  3. Linux内存高,触发oom-killer问题解决

    最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂 1. 首先确认该系统的版本是32位 ? #uname -a Linux alarm 2.6.9-67.ELsmp #1 S ...

  4. Machine Learning系列--归一化方法总结

    一.数据的标准化(normalization)和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限 ...

  5. vsftpd.conf 详解

    //不允许匿名访问 anonymous_enable=NO //设定本地用户可以访问.注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问 local_enable=YES // ...

  6. web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示

    这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题 那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了 我们来看看我们配 ...

  7. 一张图总结html5新特性

  8. Weblogic常用监控指标以及监控工具小结

    https://blog.csdn.net/hualusiyu/article/details/39583549

  9. 【PAT】1006. 换个格式输出整数 (15)

    1006. 换个格式输出整数 (15) 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为 ...

  10. Python库导入错误:ImportError: No module named matplotlib.pyplot

    在Python中导入matplotlib.pyplot时出现如下错误: 在Windows操作系统下解决办法为: 打开命令提示符(按快捷键Win+r ,输入“cmd",回车),输入以下指令即可 ...