有些题怎么都解不出来,这时候可以打表,找规律,求通项公式等,这些方法让人拍手叫绝,真不错…… Description It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multiple test cases. The first line of input contains an integer T indicating the number of test cases.…
题目链接 题意 :  给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. 执行a = s: 现在问k次操作以后a长什么样. 分析 : 这种不断求前缀和的操作.可以考虑构造操作矩阵.最后矩阵快速幂求答案 设 dp[k][i] 为第 k 次操作.第 i 个数的值 则可以得到递推式 dp[k][1] = dp[k-1][1] dp[k][2] = dp[k-1][2] + dp…
题目链接 题意 : 中文题.点链接 分析 : 有道题是问你不断求前缀和后的结果 Click here 这道题问的是逆过程 分析方法雷同.可参考 Click here -------------------------------------------------------------------------------- 正着做的矩阵是一个下三角 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 结合杨辉三角可得 C(k, 0) C(k+1, 1)      C(k, 0) C…
1.快速幂 原理:求a的b次方,将b转化为二进制数,该二进制位第i位的权是2^(i-1), 例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算   实现: 快速幂可以用位运算来实现 b and 1{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为1} b shr 1{就是去掉b的二进制最低位(即第0位)} C++实现为 b & 1//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶 b&g…
H. Special Palindrome time limit per test:1 second memory limit per test:64 megabytes input:standard input output:standard output A sequence of positive and non-zero integers called palindromic if it can be read the same forward and backward, for exa…
http://codeforces.com/gym/101161/attachments 这题通过打表,可以知道长度是i的时候的合法方案数. 然后得到f[1] = 2, f[2] = 3, f[3] = 5, f[4] = 8......这样的广义fib数列 现在要求f[k] + f[2k] + f[3k] + ...... + f[xk]的总和. 直接做很难做,我不知道f[i * k] = x * f[(i - 1) * k] + y * f[(i - 2) * k] 推不出系数的话,有一个结…
Problem Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方”  Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理.  Output 对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行. 简单的说这题就是要求高次幂,有两种方法可以实现. 第一总比较土鳖,每次乘完对1000取余也可以过. 我要讲的是第二种听起来很高大上的方法—…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3483 A Very Simple Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 945    Accepted Submission(s): 471 Problem Description This is a very si…
今天分享下各种快速幂(有点坑),首先说一下快速幂的原理, 以下以求a的b次方来介绍 [1]  把b转换成二进制数. 该二进制数第i位的权为   例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算   第一种方法(普通的快速幂) #include<iostream> //适用范围a,b,p 1e9 #include<cmath> #include<algorithm> #include<stack&…
题目 已知 $x_i = ax_i + bx_{i-1}$,求 $x_n \% MOD$.($1\leq n\leq 10^{(10^6)}$) 分析 写成矩阵快速幂的形式,相当于求转移矩阵的 $n$ 次幂. 由于 $n$ 过大,只能用字符串形式保存,如果转成二进制复杂度过高,就直接用十进制好了. 其实十进制快速幂和二进制几乎一样,都是倍增的思想. ll qpow(ll a, ll b, ll p) { ll ret = ; while(b) { ) ret = ret*a%p; a = a*a…