tethys

乘法逆元

允我心安 提交于 2020-09-24 13:30:25
乘法逆元1 题目链接 这里有两种方法求逆元 其实我只会两种qwq : 在这里放一个线性的式子: \[inv_i = p-(p\div i)\times inv_{p\%i}\%p \] 原理我也不懂orz。 啊是的这是第一种方法。 另一种方法用到了费马小定理,结论是: 在模数 \(p\) 为质数的情况下: \[a^{-1}\equiv a^{p-2} (mod~~p) \] 不会证。 然后我们用快速幂求一下即可。 不过在这道题里用第二种方法会T,必须用线性的求法。 乘法逆元2 题目链接 我们Tethys真的是太厉害啦!!!! 如果用线性求逆元的方法,我们需要求出从 \(1\) 到 \(a_{max}\) 的所有逆元。 然而 \(a_{max}\) 上限为 \(10^{9}\) ,这种做法显然是不可行的。 有另一种求逆元的方法 好像叫离线求逆元?? : 首先逆元是完全积性的,我们要知道 \(a_i\) 的前缀积的逆元就是逆元的前缀积。 所以我们在输入的时候顺便求一下前缀积,然后有这么两个式子: \[式子1:a_{i}^{-1}=pre_{i}^{-1}\times pre_{i-1}(1\leq i\leq n) \] \[式子2:pre_{i-1}^{-1} = pre_{i}^{-1} \times a_i (1\leq i< n) \] 推式子: 式子是怎么推的,

友链

柔情痞子 提交于 2020-08-19 05:44:17
黑山墨字 得又则·的了也·在与可 Tethys 冰公主老公本人。 Ame_ 二次元能不能滚出去! Aswert LNOI创始人。 C锥 为什么打火机的火苗一直在跳因为他是精神小火 sodak 我不喜欢这世界,我只喜欢你。 来源: oschina 链接: https://my.oschina.net/u/4283847/blog/4443942

友链

Deadly 提交于 2020-08-17 17:29:10
黑山墨字 得又则·的了也·在与可 Tethys 冰公主老公本人。 Ame_ 二次元能不能滚出去! Aswert LNOI创始人。 C锥 为什么打火机的火苗一直在跳因为他是精神小火 sodak 我不喜欢这世界,我只喜欢你。 来源: oschina 链接: https://my.oschina.net/u/4351661/blog/4443935

Linux下编译运行代码

我的未来我决定 提交于 2020-08-14 05:36:02
因为觉得学 \(Vim\) 有点麻烦,所以就用 \(emacs\) 了。 常用指令: g++ code.cpp -o code -g -Wall 编译你的代码成为可执行文件 ./code 运行你编译出来的可执行文件 ls 列出所在文件夹的所有文件 cd 打开文件夹 这...多简单啊,就这几个命令,比 \(Vim\) 简单多了啊qwq。 恩,没别的了...别的反正你也用不到orz。 食用方法: 首先打开虚拟机中的Linux,我们会看见非常丑的界面 他确实非常丑qaq 。 然后打开你的代码所在的文件夹,右击,然后 在终端中打开 (注意必须在终端中打开,这样可以省去好几步比较麻烦的步骤): 这个时候你的电脑屏幕会这样: 直接输入编译命令即可。其中 code 是你的cpp文件名。这句命令的意思是把你的 code.cpp 文件编译为 code (不带 .exe 后缀)可运行文件。 然后你就会神奇的发现文件夹里多了一个名为 code 程序。 让我们来双击运行一下qwq。这个时候你发现无论你怎么使劲点 就算把鼠标点爆了 他也运行不了。 是不是我们没带 .exe 后缀的问题??其实就算你带了也没用, Linux无法运行 exe 文件 qwq。 啊所以我们需要这样(其中 code 是你编译出来的可执行文件的名字): 然后他就神奇的运行了! 基本操作就没啦qwq! 发现没有,其实最常用的命令就只有 \

20/08/02测试

南笙酒味 提交于 2020-08-13 06:09:13
T1 考场代码: #include <bits/stdc++.h> using namespace std; template<typename temp>temp read(temp &x){ x = 0;temp f = 1;char ch; while(!isdigit(ch = getchar())) (ch == '-') and (f = -1); for(x = ch^48; isdigit(ch = getchar()); x = (x<<1)+(x<<3)+(ch^48)); return x *= f; } template <typename temp, typename ...Args>void read(temp& a, Args& ...args){read(a), read(args...);} const int maxn = 1e6+10; int n, ans, pos[2][maxn]; signed main(){ freopen("distance.in", "r", stdin); freopen("distance.out", "w", stdout); read(n); for(int i = 1, cmp; i <= n; i ++) pos[0][read(cmp)] = i; for(int i = 1, cmp; i <= n