类欧几里得模板 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 ...
随机推荐
- fastadmin中curd生成的表单将数字展示为文字
1.在require-table.js文件中找到formatter 在status中将下列参数自行替换为你的表达方式 var custom = {2: 'success', 3: 'danger', ...
- Milking Time POJ - 3616 dp 感觉像背包
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...
- Struts2学习-struts执行过程简述
1.web.xml <web-app> <filter> <filter-name>struts2</filter-name> <filter-c ...
- 杭电oj 1087——super jump!jump!jump(java实现)
question:Super Jumping! Jumping! Jumping! 意思就是找一串数字中的和最大子串 思路:创建另一个数组,每一项是路径数组对应项之前最大子串的和,然后遍历此数组找出最 ...
- 【Python】画一个心形
#!/usr/bin/env python # -*- coding:utf-8 -*- import turtle import time # 画心形圆弧 def hart_arc(): for i ...
- 小程序 与 App 与 H5 之间的区别
小程序的实现原理 根据微信官方的说明,微信小程序的运行环境有 3 个平台,iOS 的 WebKit(苹果开源的浏览器内核),Android 的 X5 (QQ 浏览器内核),开发时用的 nw.js(C+ ...
- SQLserver中存储图片
两种方式1.存放图片路径2.转换成2进制流(不过这样的话将很占用数据库空间)存路径的方式就很简单了,下面着重给出转换成2进制流的存入以及读取方法.存入:string FilePath="&q ...
- 搭建 Review Board - SVN 审核工具
一.安装环境 CentOS-6.7,ReviewBoard-2.5.1.1 二.安装环境的配置 1.确认当前系统中有如下包,若没有,使用yum安装 httpd-2.2.15:httpd 指的是apac ...
- 题解 AT4170 【[ABC103A] Task Scheduling Problem】
翻译 有 \(3\) 个正整数 \(a\).\(b\).\(c\),请你输出这 \(3\) 个数中的最大值 \(-\) 最小值的差. 分析 求最大值 \(-\) 最小值的差,我们自然可以使用 for ...
- C语言链表总结(创建,排序,增加,删除)
#include <stdio.h>#include <stdlib.h> typedef struct NODE{ int data ; struct NODE * pNex ...