文档介绍:Nim Game:解决方案:当 n<4 时先手赢;当 n%4==0 先手必输;其他状况即:先取走 n%4
个石块,那么后手遇到的石块数就是4 的倍数,那他就必需跪。
数根问题:将一个数的各个位上的数相加,再重复这操作,直到得到一个个Nim Game:解决方案:当 n<4 时先手赢;当 n%4==0 先手必输;其他状况即:先取走 n%4
个石块,那么后手遇到的石块数就是4 的倍数,那他就必需跪。
数根问题:将一个数的各个位上的数相加,再重复这操作,直到得到一个个位数。有一个数学方法就是〔该数-1〕%9+1。
友情提示:负数对正数取余,是确定值余正数再加上负号。
数组的排序调用函数:(); 简直爽爆了。
字符串的一些方法真的很有用:例如:字符串转为数组以及数组转字符串
假设推断一个数n 是不是 2 的幂,只需要 n>0&&n&(n-1)==0 即可。这里用到了二进制,速度比较快。
求 N!后挂 0 的个数,即求一共有 5 的多少次方,要留意 5,5 的平方,5 的立方等等。
罗马数字表示:
I - 1II - 2III - 3IV - 4V - 5VI - 6X - 10L - 50C - 100D - 500M - 1000罗马数字共有七个,即 I(1),
V(5),X(10),L(50),C(100),D(500),M(1000)。依据下面的规章可以表示任意正整数。 重复数次:一个罗马数字重复几次,就表示这个数的几倍。如:“III“表示“3“;“XXX“表示“30“。右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字, 如“VI“表示“6“,“DC“表示“600“。一个代表大数字的符号左边附一个代表小数字的符号,就 表示大数字减去小数字的数目,如“IV“表示“4“,“XL“表示“40“,“VD“表示“495“。尽管在一 个较大的数字的左边记上一个较小的罗马数字,表示大数字减小数字。但是,左减不能跨越 等级。比方,99 不行以用IC 表示,用XCIX 表示。加线乘千:在一个罗马数字的上方加上一条横线或者在右下方写M,表示将这个数字乘以 1000,即是原数的 1000 倍。留意:每
个数字自能连续消灭三次,所以逢四逢九就要要大数减10 的幂
8. Int 表示的最大整数是 2147483647 ,在自己算开方的时候要留意:不能算出比这个数更
大的值,否那么就会报错。 (i*i<=x)&&((2*i+1)>x-i*i);这个推断语句就很好的避开了(i*i<=x)&&((i+1)*(i+1)>x);可能存在的值越界错误。
求幂函数的时候,用快速成果法真的很快
在二差查找的时候肯定要留意整数相加超过整数的取值范围问题? 例如: mid=first+(end-first)/2;和 mid=(first+end)/2;在算数的角度是一样,但是对计算机而言不是一样的,后者存在越界错误,而前者没有。
二叉树的遍历,肯定要留意:1)空树怎么办 2)一个节点怎么办 3〕其他状况如何。但是要留意:用递归的时候要搞清楚左右子树返回的结果应当怎样组织
将两个有序链表合 2 唯一。要考虑如下几点:1)两个有空表 2)假设有个链表遍历完了
在链表中 null 也是可以返回的