Flying Chess

January 2nd, 2012 01] 旧题新做

在家里待着就是容易犯懒,8点多就想睡觉,然后一睡睡到第二天的早上。饭点的时候各种消遣活动。这种状态可不是什么好事。虽然答应了昨晚开始学习,但又是睡了过去。但绝不是今天!

把老早前找实习时收到的一份网上题目搜了出来,重新做了一遍,总结一下,对,就是总结给你看的!

Q1: Find Greatest Common Divisor.

当时给题目时,算法描述也一块带了过来,挺奇怪的,就是实现?

Algorithm:
欧几里得算法
分析:求最大公约数的算法思想:
(1) 对于已知两数m,n,使得m>n;
(2) m除以n得余数r;
(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4) m←n,n←r,再重复执行(2)。
例如: 求 m=14 ,n=6 的最大公约数. m n r

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;

int gcd(int m, int n) {
    if(0 == m) return n;
    if(0 == n) return m;
   
    if(m<n) {
        int temp = m;
        m = n;
        n = temp;
    }
    while(0!= n) {
        int rem = m%n;
        m = n;
        n = rem;
    }
    return m;
}

int main(int argc, const char* argv[]) {
    if(argc < 3) {
        cout << "Usage: ./gcd <num1> <num2>" << endl;
        return 0;
    }
    int m = (int)strtoul(argv[1], 0, 0);
    int n = (int)strtoul(argv[2], 0, 0);
    cout << "Gcd of " << m << " and " << n << " are: " << gcd(m, n) << endl;
    return 0;
}

Q2: Linux 基础命令(悔不当初啊)
1.列出当前目录所有.log文件

1
ls *.log

2.查找home目录下,所有log文件含有abc字符串的文件

1
find /home -name “*.log” | xargs grep “abc”

3.查找在系统中最后10分钟访问的文件

1
find / -amin -10

Linux 下find 命令的使用
4.查找在系统中属于FRED这个用户的文件

1
find / -user FRED

5.一个文件格式如下,写一个脚本统计其所有重复行的行数
abc
hjg
bcd
abc
bcd
kkk

输出结果示例:
2 abc
2 bcd
1 hjg
1 kkk

1
sort file | uniq -c

6.显示输出没有字符“48”所有的行

1
grep -v “48” file

7.去掉一个文件内所有重复的行

1
sort file.txt | uniq -u

Related posts:

  1. 01]HDU ACM 1020 Encoding
  2. 01] Sort Algorithm
  3. 05] Solution for diet

One Response to “01] 旧题新做”

  1. Says:

    啰嗦!

Leave a Reply