数学基础
文章平均质量分 64
自在_飞花
这个作者很懒,什么都没留下…
展开
-
UVa11401 Triangle Counting
设三角形三边为a,b,c, c 为最大边。 当c == n时,有 a的取值范围为[2,n-1]. b的取值范围为[n-a+1,n-1]; 共有 sum = n*n - 3*n +2 种情况。但是其中又不符合题意的情况,即 a == b 且 每种符合题意的三角形均被计算了两次。 a == b 的情况 只有当 a 的取值大于 n/2 时才会存在,即总共有 s = n/2原创 2013-09-18 15:22:18 · 700 阅读 · 0 评论 -
POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)
根据题意可构造出方程组,方程组的每个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki;高斯消元构造上三角矩阵,以最后一个一行为例:C*x9 = sum + 4*k,exgcd求出符合范围的x9,其他方程在代入已知的变量后格式亦如此。第一发Gauss,蛮激动的。#include #include #include #inclu原创 2014-08-09 12:00:57 · 931 阅读 · 0 评论 -
CodeForces 10C. Digital Root
求A,B,C ∈[1,N] && A*B != C,d(A*B) == d(C)的组数。首先要知道d(x) = (x%9 == 0 ? 9 : x%9);那么则会有A*B == C,则必有d(A*B) == d(C)。若不考虑A*B != C,则答案既是ans[x]*ans[y]*ans[d(x*y)],ans[x]为d(i) == x的个数,显然x∈[1,9]。当考虑A*B !=原创 2014-10-26 20:43:21 · 991 阅读 · 0 评论 -
POJ 1284 Primitive Roots 欧拉函数模板题
#include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000");#define EPS (1e-6)#define LL long long#de原创 2014-11-13 19:02:23 · 717 阅读 · 0 评论 -
Codeforces 17D Notepad 简单数论
由题意可知,anw = (b-1)*b^(n-1)%c,则重点为求b^(n-1)。弱渣推不出来只能上公示。phi(c)为小于c且与c互质的个数。当x >= phi(c)时:A^x = A(x%phi(c) + phi(c)) 。当x #include #include #include #include #include #include #include #i原创 2014-11-03 18:21:00 · 1262 阅读 · 0 评论 -
396A On Number of Decompositions into Multipliers 组合
首先将所有的数进行质因子分解,统计每个质数出现的次数。假设第i个质数Pi出现了m次,则可以转化为将m个相同的球放入n个不同盒子的问题,允许盒子唯恐,即不放球。那么这个问题解即为C(n+m-1,n-1),求解过程如下:首先这个问题 等价于 将n+m个相同的球放入n个不同盒子,每个盒子都至少有一个球。这样隔板法可解,将n+m个球排成一列,然后从n+m-1个缝隙选n-1个插入隔板,这样就原创 2015-01-16 09:01:47 · 586 阅读 · 0 评论 -
又见矩阵快速幂 模板贴起来
#include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000")#define EPS (1e-8)#define LL long long#define ULL unsigned lon原创 2015-03-03 16:18:48 · 655 阅读 · 0 评论 -
HDU 4565 So Easy! 矩阵快速幂
设(a+sqrt(b))^n为(Xn + Yn*sqrt(b)),那么显然有(a+sqrt(b))^(n+1) 为 (a*Xn + b*Yn + (aYn+Xn)*sqrt(b))。那么显然有(a+sqrt(b))的Xn,Yn可以表示为 :然后又会发现,(a-sqrt(6))^n可以表示为:那么会发现(a+sqrt(b))^n = (a+sqrt(b))^n + (a-原创 2015-03-04 10:45:32 · 850 阅读 · 0 评论 -
HDU 2855 Fibonacci Check-up 构造矩阵
不得不承认智商真的被压制了。。其实开始的时候试过用二项式定理避开组合数的计算,不过没想到单位矩阵这个神奇的东西233。设有矩阵A,B,EE为单位矩阵。设新得到的矩阵为C,那么矩阵C的第一行第一列即为答案。#include #include #include #include #include #include #include #include #inc原创 2015-03-11 15:32:06 · 817 阅读 · 0 评论 -
HDU 4291 A Short problem 又是一道神奇的矩阵
首先要知道一个姿势,对于Fib数列这类的东西,只要取余就一定会出现循环节。所以上来就直接暴力打表找规律就好了。MOD = 1000000007 发现循环节是 222222224。MOD = 2222222227 发现循环节是 183120然后这个问题就解决了。不要问我为啥会出现循环节,我也不会证明。。。#include #include #include #include原创 2015-03-11 17:11:49 · 846 阅读 · 0 评论 -
HDU 5072 Coprime 同色三角形问题
好吧,我承认就算当时再给我五个小时我也做不出来。首先解释同色三角形问题:给出n(n >= 3)个点,这些点中的一些被涂上了红色,剩下的被涂上了黑色。然后将这些点两两相连,于是每三个点都会组成一个三角形,即总共有sum = C(3,n)个三角形。对于一个三角形,如果三个点颜色一样则称其为同色三角形。那么一个很直观的思路就是容斥,sum - 非同色三角形个数ans。ans =原创 2015-03-13 21:21:54 · 917 阅读 · 0 评论 -
原根
定理:如果m有原根,那么它一定有φ(φ(m))个原根。求模素数P原根的方法:对p-1素因子分解,得到top个素因子,若有(g^((P-1)/FACi))%P != 1%P (1原创 2015-04-09 12:26:35 · 881 阅读 · 0 评论 -
我说我在总结谁会信。。
1.(x+y)%mod == (z+w)%mod,若y,z,w已知,则x = ((z+w)%mod - y +mod)%mod。原创 2014-07-31 23:17:37 · 778 阅读 · 0 评论 -
初涉矩阵快速幂
一般用来加速递推。简单的,对于fib数列有,f0 = 1,f1 = 1,fn = fn-1 + fn-2(n >= 2)。则对于fn有:一般的,对于fn = A1*f(n-1) + A2*f(n-2) + .... +A(n-1)*f1,有:又因为矩阵乘法满足结合律,所以可以用快速幂来求A^n,从而达到递推的效果。顺便即一个小技巧:原创 2014-07-31 19:37:46 · 663 阅读 · 0 评论 -
HDU 2886 Lou 1 Zhuang
思维好重要。。对于n+m == k , 当n == m || abs(n-m) == 1 时n*m取得最大值。则对于k分解成若干个数,则最后有若干个3和若干个2。又有,三个2换成两个3,和不变积增大。所以最后最多之会有两个2,剩下的由3组成。则题目变成了 求3^m。#include #include #include #include #include #includ原创 2014-05-01 00:41:44 · 1431 阅读 · 3 评论 -
POJ 3252 Round Numbers
简单的组合数学。 题意:给出两个数,找出这两个数之间的Round Numbers。范围包括这两个数。 所谓的Round Numbers就是将给出的十进制数转化成二进制之后,0的个数 >= 1的个数。 思路: 设给出的数为m,其二进制长度为len。 先找出长度小于 len 的情况,这一种情况比较简单。 另一种就是寻找和 m 的长度相同且 从高位到地位枚举m原创 2013-09-18 15:22:21 · 695 阅读 · 0 评论 -
HDU 1722 Cake
这道题有一个简单的思路 就是 a+b-gcd(a,b); 另一种就是就是递归求解。 (1) 当Max == Min时,显然蛋糕要均匀的要分成Max(Min)份。 (2)当 Max != Min 时,设m = Max/gcd(Max,Min)*Min; 此时应该将蛋糕的 (Min*Min)/m 部分分成 Min份,即每份Min/m = Min*Min*gcd(原创 2013-09-18 15:22:16 · 664 阅读 · 0 评论 -
POJ 1850 Code
早晨有点迷糊,读错题WA了一次,然后又CE了一次..... 给出一个字符串 均为小写字母 且 长度 若给出的字符串可编码则输出对应数字,否则输出0. 可编码的要求为:字母的字典许从左到右一次增大。 设len为字符串长度,i 为对应字母,f[][] 为 长度为len 首字母为 i 是 的情况 ,则有: 当 len = 1 时 f[1][i] = 1; 当原创 2013-09-18 15:22:23 · 613 阅读 · 0 评论 -
HDU 1396 Counting Triangles
数学基础第一弹! 简单的递归题,没有什么可说的。只是要细心细心再细心,不要心浮气躁,急于求成。 1 #include 2 #include 3 4 using namespace std; 5 6 long long int CountTriangle[1000010]; 7 8 int main() 9 {10 in原创 2013-09-18 15:22:11 · 786 阅读 · 0 评论 -
poj 2773 Happy 2006
简单的欧几里得函数应用。 f(x,y) = f(y,x%y); f(x,y) = f(y*t+x,y) t为非负整数; 其时这道题还有好多优化,Discuss里面好多大神都弄到了0ms。。。Orz 我只水过去了。。。。 G++ 2400++,用C++ TLE.... 特别的注意 1 的情况 RE了好多次 1 #include 2原创 2013-09-18 15:22:14 · 684 阅读 · 0 评论 -
POJ 1942 Paths on a Grid 组合数的优化
模板题。 数据范围较大时: 1 double cal(double x, double y) 2 { 3 double i, j, sum = 1; 4 if(y > (x/2)) 5 y = x - y; 6 7 for(i = x, j = 1; i > x-y; i--, j++) 8原创 2013-09-18 15:22:25 · 673 阅读 · 0 评论 -
减小模运算时间复杂度的小技巧
昨天兄弟问我一个模运算的题,怎么写怎么超时,要么WA,两个菜鸟讨论了半天也没讨论出个所以然来。后天问了别人,感觉这种写法很实用啊,就先存在这里。 题目是SDUST OJ上的,题目如下:Problem U: 开心的小杰Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 135 Solved: 25[Submit][Status][Web原创 2013-09-18 15:20:28 · 1849 阅读 · 0 评论 -
CodeForces 300C Beautiful Numbers 组合数取余
题目链接 : http://codeforces.com/problemset/problem/300/C明显的组合数问题,题意就不赘述了。公式 C(n,m) = fact[n]*inv(fact[n-m]*fact[m])%MOD; fact[i] = i!; 留着备忘知道上面这个东西 这个题就已经A掉了,话说数论真的好坑哇......知道公式的秒出,不知道的做到死也出不来了...原创 2013-11-17 13:42:22 · 1751 阅读 · 1 评论 -
ZOJ Goldbach 2013年长沙赛区网络赛
迟到了一天的AC。。。。思路:先把单个素数 或着 两个素数能组成的情况预处理一下,然后对于给出的 n,拿第三个素数去和两个素数的情况匹配,最后要注意去重。详情见代码。因为手残少敲了一个 else ,Debug了一晚上。。。#include #include #include #include using namespace std;const long l原创 2013-09-24 20:21:05 · 2026 阅读 · 0 评论 -
CodeForces 375A Divisible By Seven
将给的这一串数字 分成三部分,“1689”为一部分,0为一部分,其余的为一部分。第三部分*10000对7取余 ,然后用“1689”这一部分的一种情况去中和第三部分的余数,最后把所有的0输出。第一次做这种题,完全没有思路啊,全靠学长带了。。。。。#include #include #include #include #include #include #include原创 2013-12-25 11:40:50 · 1295 阅读 · 0 评论 -
ZOJ 3488 Conic Section
这种题都不会可以滚回高中了好吗?!比赛结束前十秒get了这张图。。#include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000");#define EPS (1e-8)#define LL long原创 2014-03-09 18:25:42 · 1120 阅读 · 0 评论 -
组合数取余(Mod 可以不为质数)
using namespace std;const int MAXN = 200005;bool ispri[MAXN];int prime[MAXN];int priCnt;void CalPrime(){ priCnt = 0; memset(ispri,false,sizeof(ispri)); for(int i = 2;i < MAXN; ++原创 2015-06-24 16:56:29 · 1695 阅读 · 0 评论