7.30考试password
先说地球人都看得出来的,该数列所有数都是p的斐波那契数列中所对应的数的次幂,所以一开始都以为是道水题,然而斐波那契数列增长很快,92以后就爆long long ,所以要另谋出路,于是乎向Ren_ivan大犇学了扩展欧拉定理:(a^b)%p=(a^(b%φ(p)))%p不要问我为什么,我也不会证。
所以这道题就变成简单的数学题了,首先筛出sqpt(1<<31)以内的素数,不必担心复杂度,线筛还是挺快的。然后针对每一个q求出它的欧拉函数,再通过矩阵快速幂求出对应的斐波那契数列,再用快速幂最终处理即可,简单粗暴,唯一的难点就是扩展欧拉定理。
考试的时候除了扩展欧拉定理都想到了,只能打完快速幂,预处理出斐波那契数列后硬杠,结果当时有点贪心,是否直接使用斐波那契数列的边界开的大了点,爆了long long ,丢了2个点的分,又一次身败名裂……
(本代码函数名都为拼音+英文,见笑了)。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
long long m,p,zz,n;
long long ol[<<];
bool fss[<<];
long long ss[<<];
void olhs(){
ol[]=;
for(long long i=;i<=n;i++)
{
if(!fss[i])
{
zz++;
ss[zz]=i;
ol[i]=i-;
}
for(long long j=;j<=zz;j++)
{
long long x=i*ss[j];
if(x>n)break;
fss[x]=;
if(i%ss[j]==)
{
ol[x]=ol[i]*ss[j];
break;
}
else
ol[x]=ol[i]*(ss[j]-);
}
}
}
long long ksm(long long x,long long y,long long z){
long long ans=;
long long yy=y;
if(!x)
return %z;
while(x)
{
if((x&)) ans=(ans*yy)%z;
yy=(yy*yy)%z;
x/=;
}
return ans;
}
long long getol(long long x){
long long sum=x;
for(int i=;(long long)((long long)ss[i]*(long long)ss[i])<=x;i++)
if(!(x%(long long)ss[i])){
sum=sum-sum/(long long)ss[i];
while(!(x%ss[i]))x/=(long long)ss[i];
}
if(x>)sum=sum-sum/x;
return sum;
}
long long mo;
struct no{
long long x[][];
no operator *(const no &a)
{
no ans;
ans.x[][]=ans.x[][]=ans.x[][]=ans.x[][]=;
for(long long i=;i<=;i++)
{
for(long long j=;j<=;j++)
{
for(long long k=;k<=;k++)
{
ans.x[i][j]+=x[i][k]*a.x[k][j];
}
ans.x[i][j]%=mo;
}
}
return ans;
}
};
long long getfb(long long x){
no a;
if(x==-||x==)return ;
a.x[][]=a.x[][]=a.x[][]=;
a.x[][]=;
no ans;
ans.x[][]=ans.x[][]=;
ans.x[][]=ans.x[][]=;
while(x)
{
if(x&)
{
ans=ans*a;
}
a=a*a;
x=x>>;
} return ans.x[][]+ans.x[][];
}
long long work(long long x,long long y){
mo=getol(y);
long long xx=getfb(x-);
return ksm(xx,p,y);
}
int main(){
long long xx=(<<)-;
n=sqrt(xx);
olhs();
scanf("%lld%lld",&m,&p);
while(m--)
{
long long x,y;
scanf("%lld%lld",&x,&y);
printf("%lld\n",work(x,y));
}
//while(1);
return ;
}
7.30考试password的更多相关文章
- 2019.3.28&2019.3.30考试
2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...
- NOIP模(ka)拟(chang)测试30 考试报告
应得分:300 实得分:210 毒瘤卡常出题人,卡掉90分! T1 Return 开个副本数组sort一下,unique去重就可以啦.时间复杂度$ O(nlog2(n)) $ T2 One 其实就是约 ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- 皓远的第二次博客作业(最新pta集,链表练习及期中考试总结)
前言: 知识点运用:正则表达式,有关图形设计计算的表达式和算法,链表的相关知识,Java类的基础运用,继承.容器与多态. 题量:相较于上次作业,这几周在java方面的练习花了更多的精力和时间,所要完成 ...
- 阿里云 ACP 考试学习过程分享
目录 考证意义 学习方法 ACP 报名 学习安排[重要] 考试当天 其他 经验贴 考证意义 证多不压身,证比项目经历更具有说服力,证是行业的标准认证.更多时候,是有证的人说,"证其实不重要& ...
- OCM_第一天课程:OCM课程环境搭建
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- Linux - expect自动化远程登录脚本
简单模式: #!/usr/bin/expect -f spawn ssh root@192.168.0.1 expect "*assword*" send "root\r ...
- 【Python】用户登录三次锁定
这是从另外一个博客考过了的,借鉴一下,怕下次找不到1 # -*- coding:utf-8 -*- 2 3 #登录三次锁定用户 4 5 #用于计数(循环三次的判断) 6 count = 0 7 8 # ...
- PHP基础之POST与GET
post 与 get区别 *.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示.*.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1 ...
随机推荐
- .NET与Java互通AES算法加密解密
/// <summary>AES加密</summary> /// <param name="text">明文</param> /// ...
- windows下的getopt/getoptlong函数(拷贝GNU C的库函数)
http://www.cnblogs.com/oloroso/p/4856104.html
- RxJava入门优秀博客推荐
RxJava用了快半年了,现在越来越离不开这个库,从使用到逐渐接触它的背后实现,突然想写点什么关于RxJava的内容.在酝酿如何组织内容的时候,就去看看自己关于RxJava的收藏,发现满满的干货! 1 ...
- fprintf函数将格式打印到文件,非常好用(怎么没早点发现这个函数)
/* fprintf example */ #include <stdio.h> int main () { FILE * pFile; int n; ]; pFile = fopen ( ...
- CREATE CSS3是一款在线集成众多CSS3功能的生成器,可以在线生成常用的CSS3效果
CREATE CSS3是一款在线集成众多CSS3功能的生成器,可以在线生成常用的CSS3效果 CREATE CSS3 彩蛋爆料直击现场 CREATE CSS3是一款在线集成众多CSS3功能的生成器,可 ...
- 为什么API多用C而不是C++,为什么C++程序大多不使用异常
读Defective C++随笔 不尽知用兵之害者,则不能尽知用兵之利也 ——<孙子兵法> 1.为什么API多用C而不是C++以前就一直很奇怪,为什么API大都用C的方式提供,即使有C++ ...
- SQL数据库连接池与C#关键字return
SQL数据库连接池: 先前做的一个Sharepoint项目,在上线后的不久,最近一直出现间歇性访问缓慢问题Sharepoint特性问题,并分析了其数据库服务器,发现所耗内存已经达到了97%. 所以断定 ...
- 腾讯云直播录制遇到的bug
1.录制方式应用: 初始化方法 [[TXUGCRecordshareInstance] startCameraCustom:param preview:_showPlayerView]; ID ...
- 这里有123个黑客必备的Python工具!
123个Python渗透测试工具,当然不仅于渗透~ 如果你想参与漏洞研究.逆向工程和渗透,我建议你时候用Python语言.Python已经有很多完善可用的库,我将在这里把他们列出来. 这个清单里的工具 ...
- impala学习笔记
impala学习笔记 -- 建库 CREATE DATABASE IF NOT EXISTS database_name; -- 在HDFS文件系统中创建数据库,需要指定要创建数据库的位置. CREA ...