思路:容易得到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. 信息收集之zoomeye

    一.浏览器上使用api接口 1.https://api.zoomeye.org/user/login post传参:{"username" : "username&quo ...

  2. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  3. Django(基础篇)

    1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交:        提交 -> url > 函数或类中的方法           ...

  4. Django之组合搜索组件(二)--另附simple_tag的创建使用方法

    这次的代码为Django之组合搜索组件(一)的改版,实现的结果和(一)相同,不同的是,这次运用simple_tag方式,使.html程序简化 所以现在就开始编程吧! 首先想使用simple_tag方法 ...

  5. javaScript-继承2种方式

    1.组合继承 组合继承带来的问题很明细就是父类的构造函数会调用两次,如: function Person(name, age, sex) { this.name = name; this.age = ...

  6. 当想把html element里面的text提取出来可以试着用正则

    var a='123<span>456</span><span class="active">789</span>'; a.repl ...

  7. xcode没有ios7的模拟器

    xcode7 目前只支持 ios8盒和iOS9的模拟器如果是Yosemite系统,下载xcode7和xcode6.4,两个版本可以共存,然后再下载iOS7默契你如果是EI Caption系统,网上说E ...

  8. Sublime Text 2.0.2,Build 2221注册码

    Help ->Enter License,输入如下序列号: ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855 ...

  9. CSU 1355 地雷清除计划

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1355 好题,根本想不到是网络流. 模型如图: 假想从右上角到左下角有一条阻拦线,我们就是 ...

  10. wondows下安装pytho&pip

    1.在https://www.python.org/downloads/下载相应的python安装包, 解压安装,配置环境变量. 2.下载pip安装包:https://pypi.python.org/ ...