随笔分类 - ACM_数学
摘要:int DividedBy3(int A) { int p = 0; for (int i = 2; i <= 32; i += 2) p += A << i; return (-p);}
阅读全文
摘要:问题刚才在首页看到一篇博客,说的是腾讯的一道面试题:一个楼梯有50个台阶,每一步可以走一个台阶,也可以走两个台阶,请问走完这个楼梯共有多少种方法?博主把这题分析的很麻烦。引来很多人围观。我以前也碰到过这个问题。写出来和大家分享一下。举个例子,假设有3个台阶,则有三种走法:分别是,1-1-1, 1-2, 2-1。分析很简单的一道题,学过组合数学的人很快就能想到,这是一个递推关系。假设走完k个台阶有f(k)种走法。k = 1时,f(k) = 1k = 2时,f(k) = 2k = n时,第一步走一个台阶,剩n-1个台阶,有f(n - 1)种走法。第一步走两个台阶,剩n-2个台阶,有f(n - 2)
阅读全文
摘要://矩形结构struct Rect{ int leftTopX;//左上角横坐标 int leftTopY;//左上角纵坐标 int rightBottomX;//右下角横坐标 int rightBottomY;//右下角纵坐标};bool CrossLine(const Rect &r1, const Rect &r2){ return abs((r1.leftTopX + r1.rightBottomX) - (r2.leftTopX + r2.rightBottomX)) < (abs(r1.rightBottomX + r2.rightBottomX - ...
阅读全文
摘要:据说有个计算圆周率的外星人程序,如下:#include<cstdio>#include<cstdlib> int a=10000,b,c=8400,d,e,f[8401],g;int main(){ for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); system("pause"); return 0;}稍微整理:#include<cstdi
阅读全文
摘要:/* Author:yzm 求阶乘末尾0的个数 因式分解,有多少对2和5,末尾就有多少个0 而总是2多5少,所以5的个数决定了0的个数 进位思想: 先看有多少个5 (v除以5) 再看有多少个25 (v再除以5) 再看有多少个125(v再除以5) …… (类似于筛法)*/#include <cstdio>int main(){ int n, v, cnt; scanf("%d", &n); while(n --) { scanf("%d", &v); ...
阅读全文
摘要:double的新认识:以前总听说可以用double骗过高精度小数,不知道是怎么一回事儿,而且意识上double最多可以精确6位小数(oh!我的天!这想法哪儿学来的)。现在发现,double应该用有效数字来衡量会比较好,double可以拥有17位有效数字(最后一位有效数字是小数的话接受下一位数的四舍五入),那么就是说,如果整数部分位数很小,那么,小数部分的精度就可以调得很高,像这个例子 但如果整数很大的话,小数精度就会下降了:所以,在整数部分很大而小数部分又需要比较高的精度的话(17位以内),可以把整数部分和小数部分分开处理最后分别输出就可以了。题意:根据题目给出的公式计算N从1到9的时候e的值
阅读全文