数论
Rocky小鬼66
WYQ?WYQ!WYWYQQQ!!!
展开
-
站队(test05)
Problem: 给定一个长度为n的队列,求它是第几种站队方式(从矮到高认为是第一种,从高到矮认为是最后一种) 1<n<1051<n<10^5 100.0000<ai<200.0000100.0000<a_i<200.0000 Solution: 一看就是康托展开,但由于数据范围我们要对其进行优化,在寻找当前元素是第几位时,O(剩余元素个数)O(剩余元素个数)查找很不优雅,自然我们想到用数原创 2016-09-28 19:37:56 · 330 阅读 · 0 评论 -
欧拉函数模板
欧拉函数:求小于等于n的数里与n互质(gcd=1)的数的个数。 int euler( int x )//将公式变换形式,根据公式看{ int re = x; for(int i = 2; i * i <= x; i++) { if( !( x % i ) ) { x /= i; re = re原创 2016-10-17 08:46:46 · 455 阅读 · 0 评论 -
高精度加法(重载运算符)
求A+B(0<=A,B<=10100000)(0<=A,B<=10^{100000}) 高精度加法(重载运算符版),在网上有很多写法,表示不能很清楚的明白其内容,这里给出一份c语言的简单版本,便于学习理解。#include <stdio.h>#include <string.h>#define max(a,b) ((a)>(b)?(a):(b))struct Data{ int a原创 2016-10-05 00:08:03 · 1198 阅读 · 0 评论 -
康托展开
解决一些序列问题的算法 例如: 已知一个长度为n的数列,数列中每个数大小各不相同且都∈[1,n]∈[1,n]。求该数列为n个数字全排列中字典序由小到大排列的第几个。 算法流程: 我们考虑每一个数对这个数列排名的贡献,不妨假设第一个数为x,则它对这个数列排名的贡献是(比它小的数字个数)∗*(剩余数字可以组成的全排列个数),以此类推将每一个数字的贡献算出并求和,就是原创 2016-09-26 20:55:46 · 242 阅读 · 0 评论 -
求逆元
我们来看一点清真的东西: <关于逆元> 一. p特别小,b也特别小(即p*b < long long) (a/b)(a/b) mod p=ap = a mod (b∗p)/b;(b*p)/b;二. p为质数 费马小定理 aa^(p−2)(p-2)是a的逆元三. p不为质数 aa^phi(p)phi(p) mod p = 1; aa^phi(原创 2016-09-26 12:24:34 · 337 阅读 · 1 评论