//类欧几里得的模板题  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的更多相关文章

  1. It's a Mod, Mod, Mod, Mod World (类欧几里得模板题

    https://vjudge.net/contest/317000#problem/F #include <iostream> #include <cstdio> #inclu ...

  2. bzoj2187 fraction&&hdu3637 Find a Fraction——类欧几里得

    bzoj2187 多组询问,每次给出 $a, b, c, d$,求满足 $\frac{a}{b}  < \frac{p}{q} < \frac{c}{d}$ 的所有二元组 $(p, q)$ ...

  3. [ZZOJ#31]类欧几里得

    [ZZOJ#31]类欧几里得 试题描述 这是一道模板题. 给出 \(a, b, c, n\),请你求出 \(\sum_{x=0}^n{\lfloor \frac{a \cdot x + b}{c} \ ...

  4. poj 1061 青蛙的约会 拓展欧几里得模板

    // poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...

  5. 算法马拉松35 E 数论只会Gcd - 类欧几里得 - Stern-Brocot Tree - 莫比乌斯反演

    题目传送门 传送门 这个官方题解除了讲了个结论,感觉啥都没说,不知道是因为我太菜了,还是因为它真的啥都没说. 如果 $x \geqslant y$,显然 gcd(x, y) 只会被调用一次. 否则考虑 ...

  6. 2019.02.06 bzoj2987: Earthquake(类欧几里得)

    传送门 题意简述:求满足ax+by+c≤0ax+by+c\le0ax+by+c≤0的二元组(x,y)(x,y)(x,y)对数. 思路: 类欧几里得算法模板题. 把式子变化一下变成:求满足0≤y≤−ax ...

  7. 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} ...

  8. JZOJ3492数数&&GDOI2018超级异或绵羊——位&&类欧几里得

    JZOJ3492 数数(count) 我们知道,一个等差数列可以用三个数A,B,N表示成如下形式:  B+A,B+2A,B+3A⋯B+NA ztxz16想知道对于一个给定的等差数列,把其中每一项用二进 ...

  9. 2019HDU多校第五场A fraction —— 辗转相除法|类欧几里得

    题目 设 $ab^{-1} = x(mod \ p)$,给出 $x,p$,要求最小的 $b$,其中 $0< a < b, \ 1 < x<p,\ 3 \leq x\leq {1 ...

随机推荐

  1. 用windows 画图 裁剪照片

    图片大小432*312 1.裁剪大小:打开画图--找到矩形选择 形状裁剪完之后,像素会有相应的变化 2.单纯调整像素:  打开画图----重新调整大小(去掉保持纵横比之后可以任意调整大小) 题目:上传 ...

  2. Flask知识总结

    1.-----------------路由设置的2种方式----------------- 查看源码,route方法里,本质是执行app.add_url_rule() 因此可以这么写(主流方式): @ ...

  3. ssh排错思路

    telnet远程22端口refused 先netstat  -utnlp  看一下22端口监听状态(一般都不在监听) 然后systemctl  restart sshd 如果有报错,执行sshd  - ...

  4. Appnium 环境搭建

    NodeJs 下载安装 npm install -g appium-doctor Java JDK jdk-8u241-windows-x64 添加环境变量:JAVA_HOME 在环境变量Path中添 ...

  5. cocos Studio 特效文件播放失败

    可能是json文件中file的Path不对引起的.因为生成的path是根据文件在项目中的path生成的,即当此特效不是项目的一级目录时,会带有项目中上级目录,导致找不到文件(不会报错). ccs.lo ...

  6. 07 部署fastDFS文件数据库

    安装fastDFS前必须准备好两个版本匹配的文件: libfastcommon_V1.0.7.tar.gz:基础库文件 FastDFS_V5.05.tar.gz:文件数据库文件 注:这两个文件版本要匹 ...

  7. 【Python】简单计算器

    #python 3.7.1 print("operation codes are:") print("1 for multiply") print(" ...

  8. [SDOI2016] 生成魔咒 - 后缀数组,平衡树,STL,时间倒流

    [SDOI2016] 生成魔咒 Description 初态串为空,每次在末尾追加一个字符,动态维护本质不同的子串数. Solution 考虑时间倒流,并将串反转,则变为每次从开头删掉一个字符,即每次 ...

  9. 关于pip命令的几点提醒

    pip install xxxxx 总会遇到安装失败,或者下载速度很慢的情况.这是因为从国外安装资源包,造成速度慢,那有咩有国内的源呢,有的. 国内源: 清华:https://pypi.tuna.ts ...

  10. 一个仿tp5分页组件的实现

    样式: a{ text-decoration: none; color: inherit; } .out-cp{ width:100%; text-align: center; } .c-page{ ...