类欧几里得模板 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 ...
随机推荐
- Python之路Day08
文件操作 open() -- 打开 open通过Python控制操作系统打开文件 f=open('文件路径',mode='r',encoding='utf-8') mode -- 不写就默认是r f ...
- 设置Eclipse中的字符集为UTF-8
Eclipse 修改字符集 默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: ...
- redis 有序集合(set),无需集合(zset)
1.set(无序集合)无序集合每个元素都是string元素的唯一性,不能重复没有修改操作 1.增加 sadd key value1 value2 value3... 2.获取 smembers key ...
- 你所不知道的locust
from locust import HttpLocust, TaskSet, task import uuid, time import logging,json # https://docs.lo ...
- Electron – 基础学习(1): 环境安装、创建项目及入门
这几天到年底了,公司也没啥事,闲着就到处瞅瞅.记得上一家公司的时候用 Electron+ng1 写过项目,只是那个时候项目框架都是别人搭的,自己只负责写功能,对Electron没啥认识. 这几天想着反 ...
- [ZJOI2014] 力 - 多项式乘法 FFT
题意:给定 \({q_i}\),求 \[E_i = \sum_{i<j}{\frac{q_j}{(j-i)^2}} - \sum_{i>j}{\frac{q_j}{(j-i)^2}}\] ...
- An easy problem(位运算)
As we known, data stored in the computers is in binary form.(数据以二进制形式存储于电脑之中.)The problem we discuss ...
- c#自带压缩类实现的多文件压缩和解压
用c#自带的System.IO.Compression命名空间下的压缩类实现的多文件压缩和解压功能,缺点是多文件压缩包的解压只能调用自身的解压方法,和现有的压缩软件不兼容.下面的代码没有把多文件的目录 ...
- python lambda ,map详解
lambda 匿名函数 # 普通定义函数 def func1(x,y): return x+y # 执行函数 print(func(1,2)) # 如果此函数只调用一次,或者功能简单,此方法就显得笨拙 ...
- ASP.NET + MVC5 入门完整教程八 -—-- 一个完整的应用程序(上)
https://blog.csdn.net/qq_21419015/article/details/80509513 SportsStore 1.开始创建Visual Studio 解决方案和项目这里 ...