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 ...
随机推荐
- Python杂谈: __init__.py的作用
我们经常在python的模块目录中会看到 "__init__.py" 这个文件,那么它到底有什么作用呢? 1. 标识该目录是一个python的模块包(module package ...
- 【Windows10 IoT开发系列】Powershell命令行实用程序
原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Admin ...
- GzipStream的简单使用压缩和解压
压缩和解压都需要用到三个流实例,分别是文件读取流.文件写入流.压缩流. 读取流和写入流有多种形式,压缩流就一种GzipStream. 不同的是对于压缩,是需要用文件写入流作为创建压缩流实例的参数, 压 ...
- 创建第一个ASP.NET MVC项目
创建 新建->项目->展开Web->ASP.NET Web应用程序->MVC->确认 ASP.NET MVC应用程序的目录结构 /Controllers该目录保存处理UR ...
- QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化
元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数, ...
- c#透明panel
先看下效果 纯透明的pane,然后设置一个半透明的图片,可以看出来显示了父控件的button 看代码 public partial class PanelEx : Panel { protected ...
- delphi LPT1端口打印与开钱箱
{设置打印机}Assignfile(RPrinter,'LPT1'); {准备写文件}Rewrite(RPrinter); {向后倒纸}//Writeln(RPrinter,chr($b)+chr(2 ...
- VS2013设置release版本可调试
http://blog.csdn.net/caoshangpa/article/details/76575640
- 推荐一些C#相关的网站、资源和书籍 (转载自http://blog.csdn.net/chinacsharper/article/details/17514923)
一.网站 1.http://msdn.microsoft.com/zh-CN/ 微软的官方网站,C#程序员必去的地方.那里有API开发文档,还有各种代码.资源下载. 2.http://social.m ...
- 分布式自增ID算法snowflake (Java版)
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种 ...