数论
文章平均质量分 80
kuronekonano
这个作者很懒,什么都没留下…
展开
-
UPC-3843 数三角形(容斥原理+gcd+组合数)
题目描述 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个。下图为4x4的网格上的一个三角形。 注意:三角形的三点不能共线。n×m的网格共有(n+1)×(m+1)个格点。 输入 输入一行,包含两个空格分隔的正整数m和n(1<=m,n<=1000)。 输出 输出一个正整数,为所求三角形数量。 样例输入 2 2 样例输出 76容斥原理,先算所有格子中...原创 2018-03-18 00:33:27 · 713 阅读 · 1 评论 -
Codeforces Round #547 C. Polycarp Restores Permutation(二分枚举/数学+模拟)
题意: 有一个长度为N的序列p,该序列保证存在1~N每个值都存在,现在给出一个序列q,长度为N-1,表示序列p相邻两数之差,根据序列q输出序列p题解: 一开始想复杂了,以为要找什么最大差值最小差值来扩展,又或者枚举的话可能因为不断尝试的过程需要递归搜索,复杂度会很大。。。。其实非常简单,想复杂了自己吓自己了,首先可以明确的是,给出了该序列的相邻两值差值,那么直接枚举第一个值就能计算出整个序...原创 2019-03-20 08:41:38 · 789 阅读 · 1 评论 -
欧几里得与扩展欧几里得算法
原博客:https://www.cnblogs.com/haveyoueverbeen/p/4612753.html关于扩展欧几里得算法(Extended Euclidean Algorithm),我是在做青蛙的约会这一经典题目才接触到这个算法的。后面也有关于这一题的AC代码和解题思路。内容:已知a, b,求解一组x,y,使它们满足贝祖等式: ax+by =gcd(a, b)扩展欧几里...转载 2018-08-09 00:44:55 · 314 阅读 · 0 评论 -
GCD的不同写法(while、递归式辗转相除,异或交换两值,二进制筛因子)
while写法,在会递归发之前首次接触辗转相除的过程就用while模拟LL gcd(LL a,LL b){ while(b) { LL tmp=b; b=a%b; a=tmp; } return a;}然后是递归写法,最短的代码,简单明了,模拟的是辗转相除法过程LL gcd(LL a,LL b){ret...转载 2018-08-05 09:08:13 · 1820 阅读 · 0 评论 -
欧拉函数模板及拓展
在数论,对正整数n,欧拉函数是**小于**n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’s totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 其中1的欧拉函数φ(1)=1欧拉公式的延伸:对于一个数,与其互质的数的总和是euler(n...原创 2018-07-31 11:07:09 · 1279 阅读 · 1 评论 -
HDU - 4407 Sum(分解质因数&等差数列求和&容斥原理)
XXX is puzzled with the question below: 1, 2, 3, …, n (1<=n<=400000) are placed in a line. There are m (1<=m<=1000) operations of two kinds. Operation 1: among the x-th number to the y...原创 2018-05-07 19:15:03 · 382 阅读 · 0 评论 -
HDU - 4135 Co-prime(分解质因数&容斥原理)
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N. Two integers are said to be co-prime or relatively prime if they have no co...原创 2018-05-07 17:57:06 · 294 阅读 · 0 评论 -
【LightOJ - 1236 Pairs Forming LCM】"科林明伦杯"哈尔滨理工大学第八届程序设计竞赛——Hrbust -2374 Lcm function(算术基本定理)
Description 我们定义了一个函数,这个函数的定义如下:对任意,等于所有的数量,其中lcm为最小公倍数。现在给你一组数,你需要去求所有的f(n)。Input 第一行为一个正整数T,。然后有T行,每一行有一个整数n,。Output 输出有T行,每一行,输出对应的的值。Sample Input 1941145141919810Samp...原创 2018-03-28 01:13:50 · 263 阅读 · 0 评论 -
UPC-6016 微信群(O(n)组合数模板 线性求组合数)
题目描述 众所周知,一个有着6个人的宿舍可以有7个微信群(^_^,别问我我也不知道为什么),然而事实上这个数字可以更大,因为每3个或者是更多的人都可以组建一个群,所以6个人最多可以组建42个不同的群。 现在,已知一间宿舍有N个人,并且每至少K个人都可以组建一个微信群,那么他们最多可以组建多少个不同的微信群? 输入 一行两个整数N和K,表示宿舍中的人数和最少能够组建微信群的人数 输出 一...原创 2018-03-22 00:00:34 · 576 阅读 · 0 评论 -
UPC-6022 跳马(数列增量求和&广搜打表找规律)
题目描述 一个骑士在一个无限大的国际象棋棋盘里跳。一开始,这个国际象棋棋盘的每一个格子都是被标记为未被走过的,而骑士一开始可以以任意的一个格子作为起点,并且这个格子标记为走过。然后,他可以以如下图的规则跳N次,每一个他所到过的格子都会被标记为已经走过。 现在,我们需要知道在N次跳跃之后,有多少个格子可能被标记为走过。 输入 第一行一个整数T,表示数据组数 接下来T行,每行一个整数N ...原创 2018-03-24 13:14:29 · 548 阅读 · 0 评论 -
UVALive - 6862 Triples(数学分析)
题意:求有多少个三元组(x,y,z)满足 0<=x<=y<=z<=m 且 x^j + y^j = z^j. 其中输入m,和n, 且 2≤j≤n。费马大定理:当整数n >2时,关于x, y, z的方程 x^n + y^n = z^n 没有正整数解。 因此ans计算的只是当题目中的j=2时有解的情况数量 而x,y,z是指m的值,每个m都要配一个不同的n,因...原创 2018-03-18 00:59:11 · 271 阅读 · 0 评论 -
素数筛
#include<bits/stdc++.h>using namespace std;/*素数筛法 O(NlogN)*/#define maxn 1000000bool valid[maxn];void getPrime(int n,int &tot,int ans[maxn]){ tot=0; int i,j; for (i=2; i&l...原创 2019-08-17 18:39:42 · 118 阅读 · 0 评论