通宵做几道题,求热情的大牛和童子们一起帮忙看看,说说好的思路和答案,最好有点分析过程,多谢了,先拜个年,多谢

通宵做几道题,求热情的大牛和童子们一起帮忙看看,说说好的思路和答案,最好有点分析过程,谢谢了,先拜个年,谢谢
1.统计1 个word(32bit)里面的1的bit数;
int count_1(int word)
{
 int num = 0;

 while (word > 0) {
 num++;
 word = word & (word – 1);
 }

 return num;
}

int main()
{
 int word = 1200;
 int num = count_1(word);

 return 0;
}
2. strcpy的实现
char *strcpy(char *dest, const char *src)
{
 if (dest == NULL || src == NULL)
 return NULL;
 if (dest == src)
 return dest;
 char *destCpy = dest;
 while((*dest++ = *src++) != ‘\0′)
 ;
 return destCpy;
}

3.找出因子只有2,3,5的第1500个数,如1,2,3,4,5,6,8,9,10为满足条件的数,设计有效算法
满足这个条件的数据都应该满足v = 2^x * 3^y * 5^z, 从http://blog.****.net/wwd252/archive/2008/09/04/2882645.aspx看到了算法,借鉴一下
#include <stdio.h>
#include <iostream>
using std::cout;
#define N 1500


int main()
{
 long result[N];
 int p2, p3, p5;
 int i;
 result[0] = 1;
 p2 = p3 = p5 = 0;

 for(i = 1; i < N; ++i){
 int min;
 min = result[p2] * 2;
 if(min > result[p3] * 3)
 min = result[p3] * 3;
 if(min > result[p5] * 5)
 min = result[p5] * 5;
 result = min;


 if(result[p2] * 2 <= result)
 p2++;
 if(result[p3] * 3 <= result)
 p3++;
 if(result[p5] * 5 <= result)
 p5++;
 }
 cout<<result[N- 1];
}

这道题我觉着关键就是设立一个机制,判断哪个指数加1。

------解决方案--------------------
第三题有意思,我没想出怎么弄。
另外楼主最好去看看版主发的那个《提问的智慧》的帖子,里面有怎么贴代码的方法,你代码这样直接拷贝上去很难看。