两个正整数x、y,x是y的倍数,不用除法运算符实现x / y。
1、最简单的方法
循环用x减y,知道x等于0。
int Div( int x, int y )
{
int result = 0;
while ( x > y )
{
x -= y;
result++;
}
return result;
}
时间复杂度O(n)
两个正整数x、y,x是y的倍数,不用除法运算符实现x / y。
1、最简单的方法
循环用x减y,知道x等于0。
int Div( int x, int y )
{
int result = 0;
while ( x > y )
{
x -= y;
result++;
}
return result;
}
时间复杂度O(n)
1.Reflect
对于WM_NOTIFY消息:
子控件没有Reflect,则由父窗口处理。
只要子控件(即消息对应最直接的控件)有了ON_NOTIFY_REFLECT就会被子控件处理,不会被父窗口所处理。
Reflect的意思就是把消息反射给子控件处理。
大概的就是这样:
子控件有ON_NOTIFY_REFLECT | 父窗口有ON_NOTIFY | 效果 |
---|---|---|
WM_NOTIFY未被处理 | WM_NOTIFY只被父窗口处理 | WM_NOTIFY只被子控件处理 |
Y | Y | WM_NOTIFY只被子控件处理 |
终于把Micolog搞到墙内了!
用chrome打开速度很理想!
稍微修改一下Windows Live Writer的设置也能直接连到博客了!
=======================兴奋的分割线===============================
具体方法参考了:http://gae.v2find.tk/2011/06/23/micolog-gae-tk.html
但由于dot.tk对免费域名有限制:
在90天内少于25名用户访问时,免费域名会过期。
所以我改在[co.cc](a href=”http://www.co.cc/")申请免费域名。
操作跟dot.tk的对应,只是每次修改设置(如修改dns服务器)时并不一定立刻就生效,它也说了最多会在48小时内生效。
其他都按照链接的方法做就OK了。
自产生程序:不通过任何输入,输出自己代码的程序。
很多语言都可以写出这样的程序。
C版本(只有一行):
char s[] = "char s[] = %c%s%c;int main(){ printf(s, 34, s, 34);return 0;}";int main(){ printf(s, 34, s, 34);return 0;}
虽然是写出来了,但里面还是有很多值得研究的东西的。
经典的解法1:
a += b; // a变成a+b
b = a – b; // b变成原来的a,因为a+b-b = a
a –= b; // a变成原来的b,因为a+b-a = b
存在的问题:
a+b太大的话会溢出
经典的解法2:
a ^= b; // a变成a^b
b ^= a; // b变成原来的a,因为b^(a^b) = a
a ^= b; // a变成原来的b,因为a^(a^b) = b
存在的问题:
a、b的值不能超过对方的位数所能表达的范围.
如下面这种情况就会出问题:
int a = 0x10101010; // 设此时int为4个字节
short b = 0x15;
这个问题已经老生常谈了,不过今天还是遇到一个问题:
当两个要交换的数其实是同一个变量(更准确的说是同一个内存)时两种解法都会出错,变量被置0。
原因自己推算即可得出。
所以,我觉得更为保险的方法就是在交换之前先判断a、b是否相等,就既提高效率又防止出错。