一行代码算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N!   N阶阶乘求和 时间复杂度为O(n) 空间复杂度为O(1) 对于任意正整数N  求1!-N!一行算出和给定求1!+...+N!的和(0的阶乘为1,本方法适用) for(long sum=1;N>1;N--)  sum=sum*n+1: //sum为和 原理分析: 首先列出前三项找规律如下图,发现求1-N阶阶乘中的规律   因式分解得  1(1+2(1+3(1+4(1+5(1+N))))) 代码实现 用Jav…
  问题:求1到n这n个整数间的异或值,即 1 xor 2 xor 3 ... xor n 记 f(x, y) 为x到y的所有整数的异或值. 对 f(2^k, 2^(k+1) -1) (注意文章中的 ^ 表示的是“幂”,xor 表示“异或”,or 表示“或”): 2^k 到 2^(k+1) -1 这2^k个数,最高位(+k位)的1个数为2^k, 若 k >= 1,则2^k为偶数,将这2^k个数的最高位(+k位)去掉,异或值不变. 因而 f(2^k, 2^(k+1) -1) = f(2^k - 2…
1 #include "stdio.h" 2 #include "String.h" 3 #define MAX 10000 4 int f[MAX]; 5 void Arr_reset(int a[],int m,int n) 6 { 7 int i; 8 for(i=m;i<=m;i++) 9 { 10 a[i]=0; 11 } 12 } 13 int main(void) 14 { 15 int i,j,n; 16 printf("Enter…
#include<stdio.h>#include<math.h>void main(){ int n; float j=1.0,sum=1.0; for(n=1;;n++) {j=j*n;sum+=1/j;if(fabs(1/j)<1e-6)break;}printf("e=%f\n",sum);}…
先来复习一下小学数学 : 大家还记不记得小学算多位数的乘法是怎么算的? 卖个关子,大家一定要好好想想! 好了,别管到底还能不能想起来我们都要一块复习一下: 我们借助一下源自百度的图片 来复习下 相信大家都不陌生吧 好了,现在我们就开始办正事了 话不多说,我们直接看代码.具体解释会在注释中,如果有什么要补充的记得评论区留言 #include "stdio.h" #include "string.h" #define MAX 10000//结果最大位数,可以自行扩大·以…
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历,有点像回字有四种写法一样...苦笑 for index in range(0,len(tuple_1)): ... print(tuple_1[index]) >>> for index in range(0,len(tuple_1)): ... print('{}--{}'.format(…
    23):题目:求1+2!+3!+...+20!的和.     程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = 0 s = 0 t = 1 for n in range(1,21): t *= n s += t print '1! + 2! + 3! + ... + 20! = %d' % s #!/usr/bin/python # -*- coding: UTF-8 -*- s = 0 l = range…
快速求n的质因子 如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了! 第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的 #include<stdio.h> int main() { __int64 a[100],num,i,n; while(scanf("%I64d",&n)!=EOF) { num=0; for(i=2;i*i<=n;i++) { if(n%i==0) { a[num++]=i; while(…
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复杂度为O(n). 求最长回文子串这个问题,我听说有个分治+拓展kmp的算法,后缀数组也可以. 但是对于求回文串来说,manacher算法肯定有很多其他算法没有的优点. 现在进入正题: 首先,在字符串s中,用rad[i]表示第i个字符的回文半径,即rad[i]尽可能大,且满足: s[i-rad[i],…
1. 题目:求X的阶乘值 2. 要求:输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现. 3. 提示:可以用递归来实现,也可以用简单的循环来实现. 这里使用循环来实现: 对于汇编新手,最好通过高级语言的编程测试,然后再写汇编代码,这样效果会好一些. 求阶乘的C++代码如下: //The program is to find the factorial from to //author:Karllen //// #include <iostream> int fact…