类欧几里得模板 p5170
//类欧几里得的模板题 p5170
//求这三个式子;
//第一个跟后两个没关联
//后两个跟其余两个都有关联; #include<cstdio>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
typedef long long ll;
const ll inv2=;
const ll inv6=;
const ll mod=;
int t;
ll n,a,b,c;
struct query
{
ll f;
ll g;
ll h;
};
query solve(ll a,ll b,ll c,ll n)
{
query ans,prec;
if(a==){
ans.f=(b/c)*(n+)%mod;
ans.g=(b/c)*n%mod*(n+)%mod*inv2%mod;
ans.h=(b/c)*(b/c)%mod*(n+)%mod;
}
else if(a>=c||b>=c){
prec=solve(a%c,b%c,c,n);
ans.f=(prec.f+n*(n+)%mod*inv2%mod*(a/c)%mod+(n+)*(b/c)%mod)%mod;
ans.g=((a/c)*n%mod*(n+)%mod*(*n+)%mod*inv6%mod+
(b/c)*n%mod*(n+)%mod*inv2%mod+prec.g)%mod;
ans.h=(prec.h+(a/c)*(a/c)%mod*n%mod*(n+)%mod*(*n+)%mod*inv6%mod+
(n+)*(b/c)%mod*(b/c)%mod+*(a/c)%mod*prec.g%mod+
*(b/c)%mod*prec.f%mod+*(a/c)%mod*(b/c)%mod*n%mod*(n+)%mod*inv2%mod)%mod;
}
else{
ll m=(a*n+b)/c;
prec=solve(c,c-b-,a,m-);
ans.f=(n*(m%mod)%mod-prec.f)%mod;
ans.g=(n*(n+)%mod*(m%mod)%mod-prec.f-prec.h)%mod*inv2%mod;
ans.h =(n*(m%mod)%mod*((m+)%mod)%mod-*prec.g-*prec.f-ans.f)%mod;
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld%lld",&n,&a,&b,&c);
query ans=solve(a,b,c,n);
printf("%lld %lld %lld\n", (ans.f + mod) % mod, (ans.h + mod) % mod, (ans.g + mod) % mod);
}
return ;
}
求第一个式子的模板
#include<cstdio>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
typedef long long ll;
const ll inv2=;
const ll inv6=;
const ll mod=;
int t;
ll n,a,b,c;
ll solve(ll a,ll b,ll c,ll n)
{
ll ans,prec;
if(a==) ans=(b/c)*(n+)%mod;
else if(a>=c||b>=c){
prec=solve(a%c,b%c,c,n);
ans=(prec+n*(n+)%mod*inv2%mod*(a/c)%mod+(n+)*(b/c)%mod)%mod;
}
else{
ll m=(a*n+b)/c;
prec=solve(c,c-b-,a,m-);
ans=(n*(m%mod)%mod-prec)%mod;
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld%lld",&n,&a,&b,&c);
ll ans=solve(a,b,c,n);
printf("%lld",(ans+mod)%mod);
}
return ;
}
类欧几里得模板 p5170的更多相关文章
- It's a Mod, Mod, Mod, Mod World (类欧几里得模板题
https://vjudge.net/contest/317000#problem/F #include <iostream> #include <cstdio> #inclu ...
- bzoj2187 fraction&&hdu3637 Find a Fraction——类欧几里得
bzoj2187 多组询问,每次给出 $a, b, c, d$,求满足 $\frac{a}{b} < \frac{p}{q} < \frac{c}{d}$ 的所有二元组 $(p, q)$ ...
- [ZZOJ#31]类欧几里得
[ZZOJ#31]类欧几里得 试题描述 这是一道模板题. 给出 \(a, b, c, n\),请你求出 \(\sum_{x=0}^n{\lfloor \frac{a \cdot x + b}{c} \ ...
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- 算法马拉松35 E 数论只会Gcd - 类欧几里得 - Stern-Brocot Tree - 莫比乌斯反演
题目传送门 传送门 这个官方题解除了讲了个结论,感觉啥都没说,不知道是因为我太菜了,还是因为它真的啥都没说. 如果 $x \geqslant y$,显然 gcd(x, y) 只会被调用一次. 否则考虑 ...
- 2019.02.06 bzoj2987: Earthquake(类欧几里得)
传送门 题意简述:求满足ax+by+c≤0ax+by+c\le0ax+by+c≤0的二元组(x,y)(x,y)(x,y)对数. 思路: 类欧几里得算法模板题. 把式子变化一下变成:求满足0≤y≤−ax ...
- 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} ...
- JZOJ3492数数&&GDOI2018超级异或绵羊——位&&类欧几里得
JZOJ3492 数数(count) 我们知道,一个等差数列可以用三个数A,B,N表示成如下形式: B+A,B+2A,B+3A⋯B+NA ztxz16想知道对于一个给定的等差数列,把其中每一项用二进 ...
- 2019HDU多校第五场A fraction —— 辗转相除法|类欧几里得
题目 设 $ab^{-1} = x(mod \ p)$,给出 $x,p$,要求最小的 $b$,其中 $0< a < b, \ 1 < x<p,\ 3 \leq x\leq {1 ...
随机推荐
- weblogic的ssrf漏洞
前言 什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞. 一般情况下,SSRF攻击的目标 ...
- 原生js实现拖拽功能
1. 给个div,给定一些样式 <div class="drag" style="left:0;top:0;width:100px;height:100px&quo ...
- [SDOI2006] 仓库管理员的烦恼 - 二分图最大权匹配
最小化代价,即最大化"本土"货物的数量 于是就是个二分图最大权匹配裸题 #include <bits/stdc++.h> using namespace std; #d ...
- c++踩坑大法好 赋值和指针的区别
1,先说结论: 两个指针指向同一个结构,一个改了结构,另一个也会改掉. 两个指针指向同一个结构,修改了其中一个的指向,并且改了其中的内容,另一个不为所动. 2,看例子 main.cpp #includ ...
- 题解【洛谷P2070】刷墙
题面 将每一次移动的距离进行差分,前缀和判断移动的距离是否\(\geq 2\)即可. #include <bits/stdc++.h> #define itn int #define gI ...
- echarts修改X、 Y坐标轴字体的颜色
1.背景:在项目中常常会用到echarts的实例,根据不同的需求字体颜色需要变化,如图,要切合背景,就需要更改字体颜色 2.解决方案 xAxis : [ { type : 'category', da ...
- PHP+jPaginate插件制作无刷新分页实例
jPaginate是一款动感滚动分页插件,它的表现形式是像分页的按钮一样,有意思的是这些按钮却可以左右滚动,可以通过单击或 鼠标滑向点两侧的小箭头来控制按钮的左右滚动. 读取第一页数据: <di ...
- Centos7 安装 GitLab 代码管理服务器
一.安装依赖 yum -y install policycoreutils openssh-server openssh-clients postfix 二.启动postfix,并设置开机自启动 sy ...
- Django框架介绍(二)
1.MVC框架和MTV框架 MVC全名model view controller,是软件工程中的一种软件架构模式,把软件分为三个基本部分:模型(model).视图(view)和控制器(controll ...
- SQLServer使用链接服务器远程查询
--创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogi ...