摘要: 快速幂是个快速计算幂次的算法,原理很简单:a^b=a*a*a*a*a*......*a (b个a 相乘) 如果直接计算要做 b-1 次乘法。可以利用幂运算的性质: a^b=(a^c)*(a^d)=a^(c+d) 其中b=c+d如果把b平均分为两份,每份的数量为c=d=b/2, a^c和a^d的值一样,就可以重复利用。这样分一次就只要做 b/2-1+1=b/2次的乘法,若b为奇数,则要做b/2+1次乘法,于是乘法的次数就大大减少,这样重复分几次后,原式的值就能很快地算出来。用递归的代码:1 int QuickPow(int a,int b)2 {3 if (b==1) return a... 阅读全文
posted @ 2012-11-03 23:27 wuminye 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题目大意是这样的:给定长度为n的序列A[i],求所有A[i] xor A[j] (i<j)的值之和。如序列:7 3 5转化为二进制7:1113:0115:101一位一位计算7 xor 3+3 xor 5+7xor 5 (二进制)=(100 xor 000)+(10 xor 10)+(1 xor 1) //7 xor 3+(000 xor 100)+(10 xor 00)+(1 xor 1) //3 xor 5+(100 xor 100)+(10 xor 00)+(1 xor 1) //7 xor 5按列计算就变成乘法了:1+1+0=2*1=2 0+1+1=2*1=2 0+0+0=... 阅读全文
posted @ 2012-11-03 09:50 wuminye 阅读(510) 评论(0) 推荐(0) 编辑