------------数学----------------
TouchDreamer
这个作者很懒,什么都没留下…
展开
-
UVA 11582 Colossal Fibonacci Numbers!
题目分析 大家可以发现,如果f[i] = 1且f[i-1] = 0,那么数组f进入循环。接下来我们就需要找出f数组的循环周期,同时我们会发现,循环周期最大只可能为1000*1000,因为取模之后之后1000*1000种选择。同时a的b次方对周期进行取模,暴力显然会超时,只运用快速幂,logn的时间就能得到结果。这道题需要打表存下来,因为有1000次询问,但是只有1000种情况,所以打表就可以减少原创 2016-05-26 12:10:34 · 273 阅读 · 0 评论 -
POJ 1222 EXTENDED LIGHTS OUT
题目分析 读完整个题目一直感觉会有多解,但是题目好像并没有这个意思,于是我就按有唯一解的写法写的。直接构造一个30个方程,然后高斯消元就行了。#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int m原创 2017-01-18 13:53:47 · 214 阅读 · 0 评论 -
LightOJ - 1102 Problem Makes Problem
题目分析 这道题主要利用了隔板法,那么如何使用呢??对于这个问题来说我们可以这样做,我们将从n个数中选取k个部分,因为里面有些部分可能为0,那么我们可以让每个部分至少为1,那么我们直接让原来的n加上k即可,这样就相当于在n+k个1数组成的n+k-1个空子中插入k-1隔板,那么这样就很明显了,直接求逆元然后处理一下可过,本来想把n的每个阶乘的值求出来没想到超空间了,于是老老实实不打表了。#inc原创 2017-01-03 20:46:21 · 460 阅读 · 0 评论 -
LightOJ-1095 Arrange the Numbers
题目分析 这道题我的第一个想法是利用容斥原理,很明显首先得到CkmC_m^k表示选取K个位置做好人,然后对于剩余的部分,我们不能让前面的m-k个人坐上他们原来的位置,因此直接可以用总共排列的方法数,减去一个人m-k个人中有一个坐在原来位置上的,加上2个人坐在原来位置上的,减去2个人坐在原来位置上的。。。。公式是: Ckm∗∑i=1m−kCim−k∗f[n−k−i]∗−1n C_m^k*{\原创 2017-01-03 20:37:45 · 412 阅读 · 0 评论 -
LightOJ-1058 Parallelogram Counting
题目分析 本题说明了不会四点共线,很明显如果2条直线的中点相同,那么这2条直线的4个端点可以组成平行四边形。处理一下排个序即可。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e3+100;struct Nod原创 2017-01-03 20:19:39 · 280 阅读 · 0 评论 -
Codeforces Round #360 (Div. 1)
A NP-Hard Problem 一道染色的题目,跟上次写过的一道现场赛的题目很像,简单处理一下即可。#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5+100;int原创 2016-11-20 11:50:11 · 452 阅读 · 0 评论 -
Codeforces Round #382 (Div. 2)
A. Ostap and Grasshopper 简单bfs。。#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 105;char s[maxn];int n, k, vis[m原创 2016-11-29 19:34:46 · 230 阅读 · 0 评论 -
HDU 5879 Cure(数学)
吐槽一下,这道题真的是有毒,首先注意n很大,大约1000000位,因为输入文件为1M,然后就是字符串有可能有前导0,因此需要特判,网络赛真的是写出内伤。#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using names原创 2016-09-19 18:21:48 · 273 阅读 · 0 评论 -
HDU 2588 GCD
题目分析本题求1<=X<=N 1<= X <= N 与 N的gcd的值大于M的数的个数,这道题最初本来想用容斥原理去做,但是发现比较麻烦,因为还要保证gcd大于等于M,很不好求。于是还是要找到其他规律,我们可以先找到N的所有约数y,那么我们就会发现,我们只要求出(N/y)的欧拉函数,那么很明显任何与N/y互质的数L与y的乘积与N的最大公约数是y,那么我们求所有N的约数y,并找出大于等于M,然后求N/原创 2016-09-03 10:31:49 · 297 阅读 · 0 评论 -
HDU 4135 Co-prime(容斥原理)
题目分析 求A和B之间与N互质的数的个数,直接求显然是不行的,因为A,B非常大,但是我们回头一看会发现N很小,是不是有点想法了,是的,我们可以找到N的所有素因子,我们还可以将A,B之间与N互斥的个数转化为(1,B)-(1,A-1);这样我们就可以用容斥原理来求,我们求出(1,x)与n的每个素因子y不互斥的数的个数很明显就是x/y,运用容斥原理奇加偶减的规律,因为素因子的个数不会超过15,因此我们原创 2016-09-13 10:53:43 · 280 阅读 · 0 评论 -
HDU 2256 Problem of Precision
题目分析 这道题跟我之前发的一道题几乎一样,这里我就不给出证明过程了,直接上代码。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int MOD = 1024;struct Matirx{原创 2016-07-30 16:03:11 · 260 阅读 · 0 评论 -
HDU 4565 So Easy!
题目分析Sn=⌈(a+b√)n⌉%m S_n = \lceil(a+\sqrt{b})^n\rceil \% m 因为(a−1)2<b<a2(a-1)^2 < b < a^2 ,所以0<(a−b√)n<10<(a - \sqrt{b})^n<1,因此Sn=⌈(a+b√)n+(a−b√)n⌉%mS_n = \lceil(a+\sqrt{b})^n+(a-\sqrt{b})^n\rceil \%原创 2016-07-30 15:37:47 · 814 阅读 · 0 评论 -
数论基础定理及其应用(hdu 2685 I won't tell you this is about number theory, hdu 2582 f(n),hdu 1792 A New Chan)
hdu 2685 I won’t tell you this is about number theory 定理:如果a>b,则gcd(am−bm,an−bn)=agcd(n,m)−bgcd(n,m);gcd(a^m-b^m,a^n-b^n ) = a^{gcd(n,m)}-b^{gcd(n,m)};对于这道题我们可以将b看做1,这样显而易见就可以得到结果了。#include <cstdio>原创 2016-07-19 19:16:42 · 542 阅读 · 0 评论 -
杭电数论入门习题
HDU 1973 Prime Path 这道题是一道从起点到终点的问题,很明显可以用广搜搜索最小步数即可,同理也可以用最短路,但是需要建边,时间复杂度低。#include <cstdio>#include <queue>#include <cmath>#include <cstdlib>#include <cstring>#include <iostream>using names原创 2016-07-05 21:28:01 · 297 阅读 · 0 评论 -
LightOJ 1010 Knights in Chessboard
题目分析 m,n都很大,因此用搜索肯定是行不通的,只能找规律,首先,我们会发现棋子放在白格子或者黑格子都不会互相攻击,但是有特殊情况需要考虑,一种就是如果之后一行或者一列,很显然这一行或者一列都可以放棋子,如果行数或者列数为2,那么我们可以将一个田字格放满,然后隔一个田字格不放任何东西,然后在继续放,以此类推。#include <cstdio>#include <cstring>#incl原创 2016-05-26 16:28:06 · 470 阅读 · 0 评论 -
蓝桥杯 历届试题 矩阵翻硬币
题目分析 这道题想了一会突然间就想明白了,我们可以这样想对于一个坐标(x,y),这个坐标被影响的次数是多少恩? 对于坐标(2,3),对其有影响的坐标是(1,1),(1,3),(2,1),(2,3)正好4个,我们会发现对坐标(x,y)有影响 的坐标的个数是x的约束个数乘以y的约数个数,对于一个数而言如果这个数是n的平方,那么这个数约数的个数为奇数,如果不是 这个数约数的个数为偶数原创 2017-03-11 17:38:25 · 560 阅读 · 0 评论