Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13
芝士相关: 复平面在信息学奥赛中的应用【雾
其实是道 sb 题???
发现原式貌似十分可二项式定理,然后发现确实如此
我们把 \(a^i\) 替换成 \(\sqrt{a}^{2i}\) 然后发现原式求的就是 :\((\sqrt{a} +b)^n\) 展开后的偶数项
而这些偶数项有个性质,就是他们都不包含 \(\sqrt{a}\) ,所以我们可以把 \((\sqrt{a} +b)\) 转换到复平面上的点, \(b\) 做第一维, \(\sqrt a\) 做第二维
这样,每次第二维坐标相乘的时候 乘上 A 丢给第一维就好了
那么最后咱就用快速幂搞出答案取个第一维就完事儿了
于是学过二次剩余的聚聚显然秒懂代码长什么样...
Code
一直 WA ,后来才发现自己第二维赋的初始值出锅了... (真是憨呢)
//by Judge (zlw ak ioi)
#include<bits/stdc++.h>
#define int __int128_t
using namespace std;
#ifndef Judge
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
char buf[1<<21],*p1=buf,*p2=buf;
inline int read(){ int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f;
} char sr[1<<21],z[20];int CCF=-1,Z;
inline void Ot(){fwrite(sr,1,CCF+1,stdout),CCF=-1;}
inline void print(int x,char chr='\n'){
if(CCF>1<<20)Ot();if(x<0)sr[++CCF]=45,x=-x;
while(z[++Z]=x%10+48,x/=10);
while(sr[++CCF]=z[Z],--Z);sr[++CCF]=chr;
} int n,A,B,p;
struct cp{ int x,y; cp(){}
cp(int _x,int _y){x=_x,y=_y;}
cp operator *(const cp& b){
return cp((x*b.x+y*b.y%p*A)%p , (x*b.y+y*b.x)%p);
}
}s;
inline int qpow(cp x,int p){ s=cp(1,0);
for(;p;p>>=1,x=x*x) if(p&1) s=s*x; return s.x;
}
inline void Solv(){
n=read(),A=read(),B=read(),p=read();
A%=p,B%=p,print(qpow(cp(B,1),n));
}
signed main(){ int T=read();
while(T--) Solv(); return Ot(),0;
}
Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」的更多相关文章
- Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)
来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...
- Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(困难版) 并查集
题意 给一个$ n \times m$ 的网格,每个格子里有一个数字,非 \(0\) 即 \(1\),行从上往下依次编号为 \(1, 2, \cdots, n\),列从左往右依次编号为 \(1, 2, ...
- Comet OJ Contest #13 D
Comet OJ Contest #13 D \(\displaystyle \sum_{i=0}^{\left\lfloor\frac{n}{2}\right\rfloor} a^{i} b^{n- ...
- Comet OJ Contest #13 简要题解
C2 首先用并查集维护\(1\)的连通块,然后用另外一个并查集维护第\(i\)行中,第\(j\)列之后的第一个\(0\)的位置,就是如果当前位置是\(1\)那么它的父亲是它右边的格子,否则是它自己. ...
- Comet OJ - Contest #13
Rank53. 第一次打这种比赛.还是有不少问题的,以后改吧. A题WA了两次罚了不少时. C写到一半发现只能过1,就先弃了. D一眼没看出来.第二眼看出来就是一个类似于复数的快速幂. 然后B切了. ...
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
随机推荐
- JavaWeb_初识监听器Listener
监听器(listener):对项目起到监听的作用,它能感知到包括request(请求域),session(会话域)和applicaiton(应用程序)的初始化和属性的变化 监听器是Servlet规范中 ...
- MQTT消息中间件Mosquitto的安装和配置
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Qt编写大数据大屏UI电子看板系统
前言 目前大屏大数据可视化UI这块非常火,趁热也用Qt来实现一个,Qt这个一站式超大型GUI超市,没有什么他做不了的,大屏电子看板当然也不在话下,有了QSS和QPainter这两个无敌的工具组合,借用 ...
- Quartz.Net任务调度总结
Quartz.Net使用经验总结: 学习参考的例子不错,分享一下: (1)https://www.cnblogs.com/jys509/p/4628926.html,该博文介绍比较全面 (2)http ...
- 一、基础篇--1.1Java基础-equals与==的区别
==: ==比较的是变量内存中存放的对象的内存地址,用来判断两个对象地址是否相同,比较的是否是同一个对象. 1.两边的操作数必须是同一类型,不然编译不通过. 2.如果是基本数据类型比较,值相等则为tr ...
- IDEA超实用快捷键
1.查看某个方法在哪里被调用了 Ctrl+G 2.从Controller跳过接口快速进入到实现类的方法: Ctrl+T 3.快速打开:Generate Alt+Insert 4.生成包裹代码: Ctr ...
- hibernate注意
1.设置id <id name="ID"> <!-- ????????????????? --> <generator class="ide ...
- ListView 中如何优化图片?
图片的优化策略比较多.1.处理图片的方式:如果 ListView 中自定义的 Item 中有涉及到大量图片的,一定要对图片进行细心的处理,因为图片占的内存是ListView 项中最头疼的,处理图片的方 ...
- sun.misc.BASE64Encoder 不建议使用java.sun自带包中的内容
import sun.misc.BASE64Decoder; 在项目中,设计到64位编码的.有时开发会用到JDK中自带的BASE64工具.但sun公司是建议不这样做的.尤其是更新了JDK版本,项目甚至 ...
- python之拷贝文件
做了个小实验, 用于拷贝文件夹下面的jpg. 用于拓展, 可以引入类和方法, 拷贝你指定的任意类型的文件. import os src = 'C:\\Users\\Administrator\\Des ...