刷水题. 传送门 看似高精而非高精乃是此题最大亮点. 边读边取模技能get~ #include<cstdio> #define ll long long #define mod 19260817 ll read() { ll ret=;char c=getchar(); ')c=getchar(); *ret+c-')%mod,c=getchar(); return ret; } ll ksm(ll b,int p) { ll ret=; while(p) { )ret=(ret*b)%mod…
题面 题目描述 给出一个有理数 c=\frac{a}{b}  ​ ,求  c mod19260817  的值. 输入输出格式 输入格式: 一共两行. 第一行,一个整数 \( a \) .第二行,一个整数 \( b \) . 输出格式: 一个整数,代表求余后的结果.如果无解,输出Angry! 说明 对于所有数据,\(  0\leq a,b \leq 10^{10001},0≤a,b≤1010001 \) 很平常的一道膜板题,求解除法取模需要利用乘法逆元的知识 直接扩展欧几里得算法求解逆元 至于数据…
考虑到先手和后手都使用最优策略,所以可以像对抗搜索一样,设 \(val\) 为先手收益减去后手收益的值.那么先手想让 \(val\) 尽可能大,后手想让 \(val\) 尽可能小. 继续分析题目性质,发现取石子的过程可以转化为两端分别有一个栈,可以从栈顶取石子,中间有若干个双端队列,可以从其两端取石子. 如果取一个位置后,接下来的位置比刚才取的那个位置权值小,也就是从选择方向开始权值是递减的,每次决策肯定都是取当前局面权值最大的位置.如果不保证递减,就有可能取完一个位置后,使得一个权值更大的位置…
P2613 [模板]有理数取余 题目描述 给出一个有理数c=\frac{a}{b}c=ba​,求c\ \bmod 19260817c mod19260817的值. 输入输出格式 输入格式: 一共两行. 第一行,一个整数aa.第二行,一个整数bb. 输出格式: 一个整数,代表求余后的结果.如果无解,输出Angry! 输入输出样例 输入样例#1: 复制 233 666 输出样例#1: 复制 18595654 说明 对于所有数据,0\leq a,b \leq 10^{10001}0≤a,b≤10100…
P2613 [模板]有理数取余 读入优化预处理 $\frac {a}{b}\mod 19620817$ 也就是$a\times b^{-1}$ $a\times b^{-1}\mod 19620817=a\times b^{19620815}\mod 19620817$ 除法转化为了乘法,同余的性质... 求一个逆元即可,根据费马小定理,由于$19620817$是一个质数 #include<bits/stdc++.h> #define LL long long using namespace…
题目 P2613 [模板]有理数取余 解析 简单的数论题 发现并没有对小数取余这一说,所以我们把原式化一下, \[(c=\frac{a}{b})\equiv a\times b^{-1}(mod\ p)\] 因为\(p\)是质数,所以我们根据费马小定理\(b^{p-1}\equiv 1(mod p)\), 有\(a\times b^{-1}\times 1 \equiv c(mod\ p)\), \(=>a\times b^{-1}\times b^{p-1} \equiv c(mod\ p)\…
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:…
普通的扩展欧几里得算法,通过了洛谷的扩展欧几里得算法找乘法逆元.修复了容易溢出的bug,虽然新版本仍有可能会溢出longlong,假如参与运算的数字都是longlong,假如可以的话直接使用__int128或者去抄一个RoundGod的BigInt的模板(这里的C题).事不宜迟明天就抄这个大数模板. 求解模n意义下a的逆元,即求方程LCE2(a,1,n,x),结果放入x中,返回值指示是否有解. ll gcd(ll a, ll b) { if(b == 0) return a; while(ll…
Bryce1010模板 /**** *扩展欧几里得算法 *返回d=gcd(a,b),和对应等式ax+by=d中的x,y */ long long extend_gcd(long long a,long long b,long long &x,long long &y) { if(a==0&&b==0)return -1;//无最大公约数 if(b==0){x=1;y=0;return a;} long long d=extend_gcd(b,a%b,y,x); y-=a/b…
我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理).扩展欧几里德常用在求解模线性方程及方程组中. ①:裴蜀定理: 裴蜀定理\((Bezouts identity)\)是代数几何中一个定理,其内容是若设a,b是整数,则存在整数x,y,使得ax+by=gcd(a,b),(a,b)代表最大公因数,则设a,b是不全为零的整数,则存在整数x,y,使…