题意:计算$\sum\limits_{i=1}^n[(p{\cdot }i)\bmod{q}]$

类欧模板题,首先作转化$\sum\limits_{i=1}^n[(p{\cdot}i)\bmod{q}]=\sum\limits_{i=1}^n[p{\cdot}i-\left\lfloor\frac{p{\cdot}i}{q}\right\rfloor{\cdot}q]$,然后只要能快速计算$\sum\limits_{i=1}^n\left\lfloor\frac{p{\cdot}i}{q}\right\rfloor$就行了。

记$f(a,b,c,n)=\sum\limits_{i=0}^n\left\lfloor\frac{ai+b}{c}\right\rfloor$

则有$f(a,b,c,n)=\left\{\begin{matrix}\begin{aligned}&(n+1)\left\lfloor\frac{b}{c}\right\rfloor,a=0\\&f(a\%c,b\%c,c,n)+\frac{n(n+1)}{2}\left\lfloor\frac{a}{c}\right\rfloor+(n+1)\left\lfloor\frac{b}{c}\right\rfloor,a>=c\:or\:b>=c\\&n\left\lfloor\frac{an+b}{c}\right\rfloor-f(c,c-b-1,a,\left\lfloor\frac{an+b}{c}\right\rfloor-1),others\end{aligned}\end{matrix}\right.$

由于递推过程类似欧几里得法求gcd,因此称作类欧~~

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+;
int p,q,n;
ll f(ll a,ll b,ll c,ll n) {
if(!a)return (n+)*(b/c);
if(a>=c||b>=c)return f(a%c,b%c,c,n)+n*(n+)/*(a/c)+(n+)*(b/c);
ll m=(a*n+b)/c;
return n*m-f(c,c-b-,a,m-);
}
int main() {
int T;
for(scanf("%d",&T); T--;) {
scanf("%d%d%d",&p,&q,&n);
printf("%lld\n",(ll)n*(n+)/*p-f(p,,q,n)*q);
}
return ;
}

Kattis - itsamodmodmodmodworld It's a Mod, Mod, Mod, Mod World (类欧几里得)的更多相关文章

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

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

  2. It's a Mod, Mod, Mod, Mod World Kattis - itsamodmodmodmodworld (等差数列求和取模)

    题目链接: D - It's a Mod, Mod, Mod, Mod World Kattis - itsamodmodmodmodworld 具体的每个参数的代表什么直接看题面就好了. AC代码: ...

  3. 初等变换求 |A| % Mod & A- % Mod & A* % Mod(模板)

    // |A| * A- = A* (伴随矩阵) = 逆矩阵 * 矩阵的值 #include<cstdio> #include<cstring> #include<cstd ...

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

  5. ACM模板(持续补完)

    1.KMP #include<cstring> #include<algorithm> #include<cstdio> using namespace std; ...

  6. BZOJ平推计划

    学习VFK大神推BZOJ,记录一下学习的东西 1004: burnside:一个置换群的等价计数=(每个置换的置换后等价情况数)/置换总数,每个置换的置换后等价情况数就是置换后没变的数 模意义下的除法 ...

  7. 【BZOJ1004】【HNOI20008】cards

    看黄学长的代码才写出来的,sro_hzwer_orz 原题: 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给 ...

  8. 数论ex

    数论ex 数学学得太差了补补知识点or复习 Miller-Rabin 和 Pollard Rho Miller-Rabin 前置知识: 费马小定理 \[ a^{p-1}\equiv 1\pmod p, ...

  9. 退役前的最后的做题记录upd:2019.04.04

    考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...

随机推荐

  1. Golang 单例模式 singleton pattern

    在Java中,单例模式的实现主要依靠类中的静态字段.在Go语言中,没有静态类成员,所以我们使用的包访问机制和函数来提供类似的功能.来看下下面的例子: package singleton         ...

  2. 基于OpenCV的循环行、列移动函数circShift()

    ///*12 在Matlab中有个circShift()函数,可以实现行.列的循环移动 /// 在返卷积运算中,会用到这个函数.所以,在Opencv中我也定义同样 /// 功能的函数 /// 该函数有 ...

  3. springboot 多线程的使用

    int pageSize = 10000; int totalCount = doctorDAO.selectDatasByMapCount2(jsonArray, false, null); int ...

  4. C++学习笔记-继承

    类之间可以建立联系,这就使得类可以有某种关系 类之间的关系 has-A:包含关系,一个类使用另一个已经定义好的类的数据 uses-A:使用关系,友元或者对象参数传递 is-A:是的关系,这就是继承,具 ...

  5. mvn打包到私服

    mvn打包到私服 1 命令行打包 待定... 2 idea打包 1> 配置 pom.xml <!-- 发布 --><distributionManagement> < ...

  6. Maven简单项目及命令使用

    项目结构如下 HelloWorld.java package pak1; public class HelloWorld { public String sayHello(){ return &quo ...

  7. 多模块环境下修改包名Rename directory与Rename package

    选中包名->右键Refactor->Rename,如果会弹出的警告框让选择Rename directory和Rename package时,若选择Rename directory,则是只修 ...

  8. CentOS 7 配置 kcptun 实现网站加速

    目的:shadowsocks+kcptun 实现vpn加速(shadowsocks,kcptun在同一台VPS上) 一.shadowsocks安装(参考  https://www.cnblogs.co ...

  9. MYSQL中的UNION和UNION ALL

    SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...

  10. Android SDK安装与环境配置

    一.单独下载只有sdk的包,SDK不包括在Android Studio里,适用于不需要Android Studio的用户,其他可自行去官网下载. 1:Android SDK (https://www. ...