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 ...
随机推荐
- qml实现对SSL的支持(使用msys2,同时支持32和64位)超详细 good
首先准备环境.两种方法,使用mingw64 或者VS 直接放上下载地址https://sourceforge.net/projects/msys2/我下载的是msys2-x86_64-20161025 ...
- Delphi编写系统服务:完成端口演示
在开发大量Socket并发服务器,完成端口加重叠I/O是迄今为止最好的一种解决方案,下面是简单的介绍: “完成端口”模型是迄今为止最为复杂的一种I/O模型,特别适合需要同时管理为数众多的套接字,采 ...
- 腾讯网移动端H5页面设计实战分享
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- UILabel实现自适应宽高需要注意的地方(二)
需求图如下所示 UILabel "上期" 距离屏幕最左边 有35px UILabel "下期" 距离屏幕最右边 有35px 进行中文字在UIlabe ...
- Awesome Go (http://awesome-go.com/)
A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contrib ...
- 《Spring Cloud》学习(二) 负载均衡!
第二章 负载均衡 负载均衡是对系统的高可用.网络压力的缓解和处理能力扩容的重要手段之一.Spring Cloud Ribbon是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于Netfli ...
- spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务
文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...
- 【Netty4】深入学习Netty
Netty is an asynchronous event-driven network application framework for rapid development of mainta ...
- SSM(一)Mybatis基础
1.持久化与ORM 持久化是数据在内存与硬盘间相互转化的过程 ORM即对象关系映射 程序员使用面向对象的思维方式处理数据,每个对象都是一个pojo.但是保存数据的时候,却以关系型数据库的方式存储.所以 ...
- JS的第一天,精彩内容
1.JS 介绍 js的全称是JavaScript,它是一门前台语言 Java是一门后台语言 ,它们两个之间毫无关系 JavaScript的作者是布兰登,艾奇 前台语言:运行在客户端 后台语言:与数据库 ...