11月的月赛错过了,来打12月月赛,由于很(zi)想(ji)拿(tai)衣(ruo)服(la),所以去打div2。

T1是一个sb模拟,但是机房全卡死在这道语文题上了,基本上弄了一个半小时,T2可以秒杀,T4像一个数据结构神题,写了4个set+1个树状数组水了水。

然后就剩下我最怕的数学题。llj说这道题式子贼好推,你做做吧。我瑟瑟发抖。

下来看这道题,确实是道比较简单的数学题。

我们假设$F_i$为斐波那契数列的第$i$项,

那么这道题第$k$项就应该是$A_k = A_1 \times F_{k-2} + A_2 \times F_{k-1}$

那么我们需要求满足$A_1 \times F_{k-2} + A_2 \times F_{k-1} \equiv m \pmod{p}$的$A_2$的个数。

那么直接用exgcd求最小整数解就可以啦。

(update 1229)贴个代码:

//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
#define ll long long
ll T,p,n,m;
ll f[3],g[3][3],f2[3],g2[3][3]; ll aa;char cc;
ll read() {
aa=0;cc=getchar();
while(cc<'0'||cc>'9') cc=getchar();
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
return aa;
} ll gcd(ll x,ll y) {
return y==0? x:gcd(y,x%y);
} void cf1() {
memcpy(f2,f,sizeof(f));
f[1]=f2[1]*g[1][1]%p+f2[2]*g[2][1]%p;
f[2]=f2[1]*g[1][2]%p+f2[2]*g[2][2]%p;
if(f[1]>=p) f[1]-=p;
if(f[2]>=p) f[2]-=p;
} void cf2() {
memcpy(g2,g,sizeof(g));
memset(g,0,sizeof(g));
for(int i=1;i<=2;++i) for(int j=1;j<=2;++j) for(int k=1;k<=2;++k) {
g[i][j]+=g2[i][k]*g2[k][j]%p;
if(g[i][j]>=p) g[i][j]-=p;
}
} void qpz(ll k) {
f[1]=f[2]=1; g[1][1]=0;
g[1][2]=g[2][1]=g[2][2]=1;
while(k) {
if(k&1) cf1();
cf2(); k>>=1;
}
} ll qp(ll x,ll k) {
ll rs=1;
while(k) {
if(k&1) rs=rs*x%p;
k>>=1; x=x*x%p;
}
return rs;
} void exgcd(ll a,ll b,ll &x,ll &y) {
if(!b) {
x=1; y=0;
return;
}
exgcd(b,a%b,y,x);
y-=(a/b)*x;
} ll get_ans(ll r,ll x,ll b) {
if(r<0) return 0;
ll rs=r/b;
if(r%b>=x) rs++;
return rs;
} int main() {
T=read();ll x,y,a,b,c,o,l,r,w;
while(T--) {
w=read(); l=read(); r=read();
n=read(); p=read(); m=read();
qpz(n-3);
a=f[2]; b=p; c=(m%p-w%p*f[1]%p+p)%p;//
if(c%(o=gcd(a,b))) {
printf("0\n"); continue;
}
a/=o; b/=o; c/=o;
exgcd(a,b,x,y); x*=c;
x%=b; if(x<0) x+=b;
printf("%lld\n",get_ans(r,x,b)-get_ans(l-1,x,b));
}
return 0;
}
/*
1
692858490132927148 33 93 11 90 52
*/

CodePlus2017 12月月赛 div2可做题2的更多相关文章

  1. CodePlus2017 12月月赛 div2火锅盛宴

    当时看到这道题感觉真是难过,我数据结构太弱啦. 我们来看看需要求什么: 1.当前熟了的食物的最小id 2.当前熟了的食物中有没有编号为id的食物 3.当前没熟的食物中有没有编号为id的食物 4.当前没 ...

  2. 洛谷4030(Codeplus11月月赛)可做题1

    题目:https://www.luogu.org/problemnew/show/P4030 原来一个方阵巧妙的充要条件是该方阵的每个2*2子方阵都是巧妙的!!! 可以把每一行选的列视为一个排列,需要 ...

  3. 安恒X计划12月月赛

    ezweb 主要是序列化问题.没有PHP环境,在线运行的.实例化对象之后修改一下file.然后echo输出序列化的结果.不过下面有一个正则检查.数字前加一个+,影响了正则的匹配,但是对于序列化的还原没 ...

  4. 最大字段和&洛谷11月月赛DIV2 T1

    蒟蒻只能打一打DIV2的基础题 太卑微了 这道题的本质其实是再建一个数组,如果s串i位置是0那么就给a[i]赋值为1,表示要累加个数,如果是1那么就把a[i]赋值为-1,表示个数减一,最后求最大子段和 ...

  5. 「CodePlus 2017 12 月赛」可做题2(矩阵快速幂+exgcd+二分)

    昨天这题死活调不出来结果是一个地方没取模,凉凉. 首先有个一眼就能看出来的规律... 斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_ ...

  6. 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1

    [题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...

  7. 【LibreOJ】#6257. 「CodePlus 2017 12 月赛」可做题2

    [题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i ...

  8. 洛谷3月月赛div2 题解(模拟+数学+贪心+数学)

    由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round ...

  9. code+12月月赛 火锅盛宴

    时间限制: 2.0 秒 空间限制: 512 MB 题目背景 SkyDec和YJQQQAQ都是Yazid的好朋友.他们都非常喜欢吃火锅.有一天,他们聚在一起,享受一场火锅盛宴. 题目描述 在这场火锅盛宴 ...

随机推荐

  1. 基于httpd2.2配置https

    本次演示使用一台主机实现,即自签自演 主机IP:192.168.1.105 开始配置: 1.创建私有CA # cd /etc/pki/CA # touch serial # touch index.t ...

  2. AtCoder - 3959

    AtCoder - 3959https://vjudge.net/problem/1583855/origin求最长连续递增长度就行,答案是n-max(len) #include<iostrea ...

  3. mac上安装软件后,桌面上软件的图标如何去掉?

    桌面上的图标是软件的镜像包,默认安装以镜像形式,你选中它,按command+e 就可以推掉它

  4. JS钩子的机制与实现

    [什么是钩子] 接触过WordPress的朋友都知道,WP的程序中可以执行类似钩子的函数,当然是这PHP实现的钩子.在JavaScript中一样可以实现类似的功能. 用一句话来形容一下:钩子是将需要执 ...

  5. 深入浅出 Java Concurrency (3): 原子操作 part 2[转]

    在这一部分开始讨论数组原子操作和一些其他的原子操作. AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray的API类似,选择有代表性的Atom ...

  6. linux 获取外网ip地址

    curl ifconfig.me 私有ip地址,获取公网ip

  7. node.js 安装步骤

    1.打开链接(http://nodejs.cn/download/) 2.下载自己所需的安装包(32位 or 64位.哪个系统) 3.双击直接安装(成功如下图) 4.点击 Node.js comman ...

  8. pycharm新手入门

    1.新建项目 2.配置 3.create 4.新建.py文件 5.可以愉快的敲代码啦

  9. 前端算法题:找出数组中第k大的数字出现多少次

    题目:给定一个一维数组,如[1,2,4,4,3,5],找出数组中第k大的数字出现多少次. 例如:第2大的数是4,出现2次,最后输出 4,2 function getNum(arr, k){ // 数组 ...

  10. KOA 学习(七) 路由koa-router

    一.基本用法 var app = require('koa')(); var router = require('koa-router')(); router.get('/', function *( ...