It's a Mod, Mod, Mod, Mod World (类欧几里得模板题
https://vjudge.net/contest/317000#problem/F

#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstring>
#define inf 2147483647
#define P 998244353
#define p(a) putchar(a)
#define For(i,a,b) for(long long i=a;i<=b;++i) using namespace std;
long long T;
long long n,a,b,c;
struct data{
long long f,g,h;
data calc(long long n,long long a,long long b,long long c){
long long ac = a / c, bc = b / c, m = (a * n + b) / c, n1 = n + , n21 = n * + ;
data d;
if (a == ) {
d.f = bc * n1;
d.g = bc * n * n1 /;
d.h = bc * bc * n1;
return d;
} if (a >= c || b >= c){
d.f = n * n1 / * ac + bc * n1;
d.g = ac * n * n1 * n21 / + bc * n * n1 / ;
d.h = ac * ac * n * n1 * n21 / + bc * bc * n1 + ac * bc * n * n1;
data e = calc(n, a % c, b % c, c);
d.h += e.h + * bc * e.f + * ac * e.g;
d.g += e.g, d.f += e.f;
return d;
} data e = calc(m - , c, c - b - , a);
d.f = n * m - e.f, d.f = d.f;
d.g = m * n * n1 - e.h - e.f, d.g = d.g /;
d.h = n * m * (m + ) - * e.g - * e.f - d.f;
return d;
}
}ans1,ans2; void in(long long &x){
long long y=;char c=getchar();x=;
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c<=''&&c>=''){ x=(x<<)+(x<<)+c-'';c=getchar();}
x*=y;
}
void o(long long x){
if(x<){p('-');x=-x;}
if(x>)o(x/);
p(x%+'');
} signed main(){
in(T);
while(T--){
in(a);in(c);in(n);
ans1=ans1.calc(n,a,,);
ans2=ans2.calc(n,a,,c);
o(ans1.f-c*ans2.f);p('\n');
}
return ;
}
It's a Mod, Mod, Mod, Mod World (类欧几里得模板题的更多相关文章
- Kattis - itsamodmodmodmodworld It's a Mod, Mod, Mod, Mod World (类欧几里得)
题意:计算$\sum\limits_{i=1}^n[(p{\cdot }i)\bmod{q}]$ 类欧模板题,首先作转化$\sum\limits_{i=1}^n[(p{\cdot}i)\bmod{q} ...
- 初等变换求 |A| % Mod & A- % Mod & A* % Mod(模板)
// |A| * A- = A* (伴随矩阵) = 逆矩阵 * 矩阵的值 #include<cstdio> #include<cstring> #include<cstd ...
- 2^x mod n = 1(欧拉定理,欧拉函数,快速幂乘)
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- x^a=b(mod c)求解x在[0,c-1]上解的个数模板+原根求法
/************************************* 求解x^a=b(mod c) x在[0,c-1]上解的个数模板 输入:1e9>=a,b>=1,1e9>= ...
- 类扩展欧几里得 zquoj 26659
求该式子,因为只有里面mod 外面没mod: 所以先是把前面的等差数列求和,然后再减去模掉的部分: 这是类欧几里得模板题 #include<bits/stdc++.h> #define ...
- ACM模板(持续补完)
1.KMP #include<cstring> #include<algorithm> #include<cstdio> using namespace std; ...
- BZOJ平推计划
学习VFK大神推BZOJ,记录一下学习的东西 1004: burnside:一个置换群的等价计数=(每个置换的置换后等价情况数)/置换总数,每个置换的置换后等价情况数就是置换后没变的数 模意义下的除法 ...
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- 【BZOJ】1407 NOI 2002 荒岛野人Savage
拓展欧几里得入门题 两个野人若要走到同一个洞穴,设他们走了x步,则p[i]*x+c[i]≡p[j]*x+c[j](mod ans),ans即答案: 移项得到(p[i]-p[j])*X+ansY=c[j ...
随机推荐
- c# ToString()格式大全(转)
stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0stringstr2 =str ...
- java发送http的get/post请求(一)
HTTP请求类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ...
- Java设计模式(一)外观模式(门面模式)- 结构型模式
模式的定义 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得 ...
- 安装go环境
~~~~~~~~~~~~~~~~~~~~~~~~~~~~go项目运行时的依赖包安装问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.安装go环境 wget https://dl.goog ...
- 9.ActiveMQ理论
一.首先说下什么是消息队列? 1.消息队列是在消息的传输过程中保存消息的容器. 二.为什么要用到消息队列? 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的inse ...
- npm -v 报错:cannot find module 'core-util-is'
今天想打开之前的项目运行看看,结果报错:cannot find module 'core-util-is',以为只是缺少模块core-util-is,然后npm install --save core ...
- java内存模型和垃圾回收
摘抄并用于自查 JVM内存模型 1. Java程序具体执行的过程: Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀) 由JVM中的类加载器加载各个类的字节码文 ...
- amaze UI(mark)
为移动而生 Amaze UI 以移动优先(Mobile first)为理念,从小屏逐步扩展到大屏,最终实现所有屏幕适配,适应移动互联潮流. 组件丰富,模块化 Amaze UI 含近 20 个 CSS ...
- java字符串简单介绍
String:String对象初始化之后不可变线程安全简单的字符串操作使用String效率更高 StringBuffer:StringBuffer对象初始化之后可改变线程安全频繁的字符串操作可以使用S ...
- 【JZOJ4616】二进制的世界
description analysis \(DP\),这是\(Claris\)神仙的题-? 既然是\(2^{16}\)可以拆成两个\(2^8\)的位运算 照着打就行了 code #include&l ...