ACM2035_(递归法求幂)】的更多相关文章

/* 编写一个递归算法,求解m的n次方. 我们一般求解m的n次方,一般使用n个m相乘的办法来求解. 其实我们还可以使用另外一种更有效率的办法求解这个问题. 我们知道一个数的0次方等于1,一个数的1次方等于该数本身. 如果一个数的n次方的n可以被2整数,我们可以将求解的问题, 分解为m的(n/2)次方乘以m的(n/2)次方.如果不能被2整除, 则可以将问题求解转变为m乘以m的(n-1)次方, 通过这个递归的办法,我们可以很快的分解求出问题. 编写代码如下:  */ unsigned long my…
// 递归法求中缀表达式的值,O(n^2) int calc(int l, int r) { // 寻找未被任何括号包含的最后一个加减号 for (int i = r, j = 0; i >= l; i--) { if (s[i] == '(') j++; if (s[i] == ')') j--; if (j == 0 && s[i] == '+') return calc(l, i - 1) + calc(i + 1, r); if (j == 0 && s[i]…
/*递归法! ========================================== 题目: Hermite 函数:输入n.x,求Hn(x)? H0(x)=1; H1(x)=2*x; Hn(x)=2*x*Hn-1(x)-2*(n-1)Hn-2(x); ========================================== */ #include<stdio.h> float H(int n,int x) { if(n==0) return 1; if(n==1) r…
接触ACM没几天,向各路大神求教,听说ACM主要是研究算法,所以便开始了苦逼的算法学习之路.话不多说,RT所示,学习快速求幂. 在头文件<math.h>或是<cmath>中,double pow( double x, double y );函数是用来快速求x^y,于是便从pow函数来说起,以下大体上是pow的函数代码: int pow(int x, int n) { int num = 1; while (n != 0){ num = num *x; n = n -1; } ret…
做TopCoder SRM 576 D2 L3 题目时,程序有个地方需要对一个数大量求幂并取余,导致程序运行时间很长,看了Editoral之后,发现一个超级高效的求幂并取余的算法,之前做System test时,程序运行时间(最慢的测试用例)为500ms左右,使用此方法之后,运行时间直接减为20ms,快了20多倍,所以将此方法记录下来. 算法时间复杂度为 log(n). 这个算法其实就是  数据结构与算法分析 (Weiss 著) 一书中开头的那个递归求幂算法的非递归版,简洁明了. 代码如下: /…
次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 求a的b次方对c取余的值   输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000) 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 10481 /* Name: NYOJ--102--次方求模 Copyright: ©20…
一,两种不同的求幂运算 求解x^n(x 的 n 次方) ①使用递归,代码如下: private static long pow(int x, int n){ if(n == 0) return 1; if(n == 1) return x; if(n % 2 == 0) return pow(x * x, n / 2); else return pow(x * x, n / 2) * x; } 分析: 每次递归,使得问题的规模减半.2到6行操作的复杂度为O(1),第7行pow函数里面的x*x操作…
题面 Description 我们的大朋友很喜欢计算机科学,而且尤其喜欢多叉树.对于一棵带有正整数点权的有根多叉树,如果它满足这样的性质,我们的大朋友就会将其称作神犇的:点权为\(1\)的结点是叶子结点:对于任一点权大于\(1\)的结点\(u\),\(u\)的孩子数目\(deg_u\)属于集合\(D\),且\(u\)的点权等于这些孩子结点的点权之和. 给出一个整数\(s\),你能求出根节点权值为\(s\)的神犇多叉树的个数吗?请参照样例以更好的理解什么样的两棵多叉树会被视为不同的. 我们只需要知…
//递归法 /* ================================================================== 题目:求F(60),当中F(n)定义例如以下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(…
2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n-1)+2\cdot f(n-2),(n\ge 2)\),求\(f(n)\pmod {998244353}\). [Solution] ​ 利用特征根法求得通项公式为\(a_n=\frac{\sqrt{17}}{17}\cdot\Bigg(\Big(\frac{3+\sqrt{17}}{2} \Bi…