[ProjectEuler]Problem5&6分析

题目链接:http://projecteuler.net/index.php?section=problems&id=5
题目分析:求一段连续数的最小公倍数。方法就是挨个求乘积然后除以最大公倍数,最后得到的就是结果。
求最大公倍数的方法见代码,C++的Algorithm库有__gcd(int, int)函数可以直接调用。
注意使用64bit-int,避免溢出。
附代码:

#include <stdio.h>
#define MAXN 20
typedef long long llong;
void swap(llong& p, llong& q) {
    llong temp = p;
    p = q;
    q = temp;
}
llong gcd(llong p, llong q) {
    if (p < q)
        swap(p, q);
    if (q == 0)
        return p;
    else
        return gcd(q, p % q);
}
int main(int argc, char* argv[]) {
    llong res = 1;
    int i;
    for (i=1; i<=MAXN; ++i)
        res = res * i / gcd(res, i);
    printf("%I64d\n", res);
    return 0;
}

题目链接:http://projecteuler.net/index.php?section=problems&id=6
题目分析:求和的平方与平方的和之间的差值。
附代码:

#include <stdio.h>
#define MAXN 100
int main(int argc, char* argv[]) {
    int sum = 0;
    int sumOfSqr = 0;
    int sqrOfSum = 0;
    int i;
    for (i = 1; i <= MAXN; ++i) {
        sum += i;
        sumOfSqr += i * i;
    }
    sqrOfSum = sum * sum;
    printf("%d\n", sqrOfSum - sumOfSqr);
    return 0;
}

Add comment 10月 30th, 2009

[ProjectEuler]Problem4分析

题目链接:http://projecteuler.net/index.php?section=problems&id=4
题目分析:找出两个三位数的乘积中,最大的是回文串的数。回文串也就是一个从前往后和从后往前看都一样的串。
算法很直接,详见代码逻辑吧。
附代码:

#include <stdio.h>
#define LOW 100
#define HIGH 999
#define MAXL 6
bool isPalindromic(int key) {
    int digits[MAXL];
    int num = 0;
    int left, right;
    while (key) {
        digits[num++] = key % 10;
        key /= 10;
    }
    left = 0;
    right = num - 1;
    while (left < right) {
        if (digits[left] != digits[right])
            return false;
        left++;
        right;
    }
    return true;
}
int main(int argc, char* argv[]) {
    int i, j, k;
    int res = 0;
    for (i = HIGH; i >= LOW; i)
        for (j = HIGH; j >= i; j) {
            k = i * j;
            if (k <= res)
                break;
            else if (isPalindromic(k))
                res = res > k ? res : k;
        }
    if (res)
        printf("%d\n", res);
    else
        fprintf(stderr, "No palindromic!");
    return -1;
}

Add comment 10月 29th, 2009

[ProjectEuler]Problem3分析

题目链接:http://projecteuler.net/index.php?section=problems&id=3
题目分析:找出一个数的最大素数因子。算法很直接,代码中说明的很清楚了。注意使用64bit-int,否则会溢出。
附代码:

01 #include <stdio.h>
02 #define TARGET 600851475143LL
03 typedef long long llong;
04 int main(int argc, char* argv[]) {
05     llong target = TARGET;
06     llong factor = 2;
07     while (factor*factor <= target) {
08         while (target%factor == 0)
09             target /= factor;
10         factor++;
11     }
12     printf("%I64d\n", target);
13     return 0;
14 }

Add comment 10月 27th, 2009

[ProjectEuler]Problem2分析

题目链接:http://projecteuler.net/index.php?section=problems&id=2
题目分析:求出所有小于4000000的Fibonacci数列,并将为偶数的项求和。
Fibonacci数列的定义为:f[n] = f[n-1] + f[n-2],f[0] = 1,f[1] = 1。
这个也是直接暴力就好了。Fibonacci数列还有一些优美的特性,比如矩阵乘法加速等,以后碰到了再说吧。
附代码:

01 // Fibonacci sequence: f[n] = f[n-1] + f[n-2]
02 #include <stdio.h>
03 #define MAXN 4000000
04 int main(int argc, char* argv[]) {
05     int sum = 0;
06     int prev1 = 1;
07     int prev2 = 1;
08     int cur = 2;
09     while (cur < MAXN) {
10         if ((cur&1) == 0)
11             sum += cur;
12         prev1 = prev2;
13         prev2 = cur;
14         cur = prev1 + prev2;
15     }
16     printf("%d\n", sum);
17     return 0;
18 }

Add comment 10月 26th, 2009

[ProjectEuler]Problem1分析

题目链接:http://projecteuler.net/index.php?section=problems&id=1
题目分析:把所有小于1000的数中,能被3或者5整除的数求和。
很直接的暴力,没啥好深究的。
附代码:

01 #include <stdio.h>
02 #define THREE 3
03 #define FIVE 5
04 #define MAXN 999
05 int main(int argc, char* argv[]) {
06     int sum = 0;
07     int i = 0;
08     for (i = 1; i <= MAXN; ++i)
09         if (i%THREE ==0 || i%FIVE == 0)
10             sum += i;
11     printf("%d\n", sum);
12     return 0;
13 }

PS,以后玩玩ProjectEuler吧,感觉挺不错的。

Add comment 10月 26th, 2009

Linux常用命令整理

1,ps ___ process snapshot,查看当前活跃进程的信息。

常用参数:

$ ps -ef ___ 以完整的格式(-f)显示所有的(-e)活跃进程。

2,CONTROL+Z ___ 挂起程序,CONTROL+C ___ 终止程序,CONTROL+D ___ 从字符界面退出。

3,fg ___ 将作业切换至前台,bg ___ 将作业切换到后台运行。

4,jobs ___ 得到程序的作业号。

5,kill %i ___ 终止作业号为i的程序。

常用参数:

$ kill -KILL %i ___ 强制杀死。

6,cat ___ 连接文件并输出到标准输出。

7,–help ___ 大部分GNU工具都具有该选项,用来显示工具的一些信息。

8,man ___ 显示系统文档的manual页内容,info ___ 显示Linux shell、工具和GNU项目开发程序的说明文档。

9,less ___ 分页程序,more ___ 分页程序。

10,passwd ___ 修改密码。

11,ls ___ list,显示文件名。

12,rm ___ 删除文件。

13,hostname ___ 显示系统名。

14,cp ___ 复制文件。

15,mv ___ 移动文件。

16,lpr ___ 打印文件。

17,grep ___ 查找字符串。

18,head ___ 显示文件头部,tail ___ 显示文件尾部。

19,sort ___ 按顺序显示文件内容,uniq ___ 忽略文件中的重复行。

20,diff ___ 比较两个文件。

21,file ___ 测试文件内容。

22,echo ___ 显示文本。

23,date ___ 显示日期和时间。

24,script ___ 记录Linux会话记录。

25,unix2dos ___ 将Linux文件转化为Windows,dos2unix ___ 将Windows文件转化为Linux。

26,bzip2 ___ 压缩文件,bunzip2,bzcat ___ 解压缩文件。

27,gzip ___ 压缩文件,gunzip,zcat ___ 解压缩文件。

28,tar ___ 打包和解包文件。

29,apropos ___ 搜索关键字。

30,who,w,finger ___ 列出系统上的用户信息。

31,write ___ 发送消息,mesg ___ 拒绝或接受消息。

32,mail ___ 电子邮件。

33,mkdir ___ 创建目录,rmdir ___ 删除目录。

34,cd ___ 更改工作目录。

35,pwd ___ 显示当前工作目录。

36,chmod ___ 改变访问权限。

37,setuid ___ 改变用户权限,setgid ___ 改变组权限。

38,ln ___ 链接。

Add comment 09月 27th, 2009

Learning UNIX

好好的学习UNIX吧,从APUE开始。

ps:发现不写blog的这段日子,过得好凌乱。虽然总是很忙,但只是做了紧急的事,而忽略了重要的事。还是坚持写blog吧,不为别的,就为了自己能停下来整理思绪。那就从写APUE的读书笔记开始吧,享受成长的痛苦和快乐:)

Add comment 09月 1st, 2009

报告一下最新情况吧

看到上一次更新还是2月27号的事,好久不来料理了,也可以说是自己好久没有整理思绪了吧。

3-4月在xiaonei.com实习了两个月,主要做一些日志分析的工作吧,用到了MapReduce模型与Hadoop架构和Hive数据仓库。咋一看还是挺有技术含量的吧?但这确实是只能唬唬外行,做了一段时间就发现完全是“打酱油”,真没啥技术亮点。7月初继续过来xiaonei.com,准备正式入职。两周的工作后,发现确实是没啥意思,遂决定离职,毅然决然的递交了离职信。xiaonei.com在业内十分拿不出手的薪资水平,也是让人十分恼火。看到Team某些同事的工作强度,真的可以说是“拿卖白菜的钱,操卖白粉的心”。真不知道陈一舟是怎么想的,又要马儿跑,又要马儿不吃草。不过xiaonei.com的文化氛围还是挺不错的,但技术实力还真是可能有点薄弱吧。xiaonei.com给我的总体印象是,比较适合有一定工作经验的牛人过去大展拳脚,不适合刚毕业的菜鸟的发展。

现在真是有点后悔当初的决定,居然放弃了保研,傻傻的跑到xiaonei.com去上班。老天给了我一次机会,我居然直接扔掉了:(但我知道怨天尤人是不能解决问题的,必须自己积极主动的去面对。买了Toefl词汇,还是老老实实的学好英语,那样还能多一个选择。争取在两年内能混到Hongkong的Phd去读,这是我给自己的时间底限。当然技术实力和各方面的积累,都是要抓紧的,不管外界环境怎么样,这都是关乎我自己职业发展的大事,我必须要积极主动的去struggle。可以说,离开xiaonei.com,寻找新的天空,也是我不甘平庸敢于struggle的一个体现吧。我相信自己是一定能够坚定的走下去的!

Struggle:)

Add comment 07月 24th, 2009

要开始新生活了

Z12次列车,从武昌站开往北京西站,2009年02月27日21:09开。这是开往梦想的列车吗?我知道我的寻梦之旅开始了!

引用《奋斗》里的台词就是:“我们必须去工作,去谈恋爱,去奋斗,这件事十万火急,我们一天也不能等”。这次不是去玩儿,我是要去校内实习,必须要真刀实枪的干了。跟boss也聊过了,明白了自己需要努力的地方还非常多,压力也有一些吧。但是我相信自己,能够顺利的过渡,适应工作和新生活。

要开始新生活了,除了Struggle还是只能Struggle。

5 comments 02月 27th, 2009

开学了,我依然不好过-__-!!!

前天来的学校,又一次没有在家过元宵节。我已经记不清上一次在加过元宵是哪一年了。明天晓龙要过来我们学校面试一个公司,正好完了一起去吃汤圆。

到学校后,最抓紧的事情就是查成绩了。电路理论依然是没过。真不明白,都考了四次了,我怎么就是过不了呢?问了问一起重修的同学,貌似也没有听说有过了的。还好,其他的都通过了。接下来,安心的准备准备吧,补考可不能再挂了。

毕设的事情,虽然题目定了,但是具体要怎么做还是不懂,也没有一个mentor来指导指导。要命的是还有些烦人的事,不知道还能不能认真的做下去。看事情的发展了,如果真的不能做了,就太对不起张老师和双击同学了。

校内那边是2月9号之前就要过去实习的,可是考试和毕设的事拖得我二月底能不能走还是个问题。真是揪心啊,什么都不懂,还不能像别人那样准时去实习。今天黄晶问到我最近有没有在学些东西,我都不好意思说我啥都没干。真是越来越懒了,赶紧振作起来吧。忙完考试就是工作了,这可马虎不得。

今天也推荐了队友lsh和川大的zerg给黄晶,祝他们好运吧!

牛年了,希望我在牛年能够牛气冲天!!!

Add comment 02月 8th, 2009

Previous Posts