首页
社区
课程
招聘
7
[原创]刘涛涛的面试题
发表于: 2010-8-28 17:18 29046

[原创]刘涛涛的面试题

2010-8-28 17:18
29046

想起被W哥拒绝和被S哥无情地忽视,真是很伤心
既学不成国际一流的做壳技术,也学不成国际一流的解密技术,世上还有什么事能让人快乐呢?从此之后,我便郁郁寡欢,整日在网上闲逛。

一日,我无意间访问到我国著名程序员刘涛涛的blog,逐一阅读其博文之后,深感佩服,让我印象最深的要数“扭曲变换加密”与“哈巴雪山-帐篷事件”,两篇文章让人感受到前辈技术和人格上的魅力。除此之外,我还在另外一篇文章中看到了他出的一道面试题目,引用原文片段如下

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
void mystrrev(unsigned char* s);
void add(char *s1,const char *s2);
 
int main(int argc,char *argv[])
{
     
    const char* szStr = NULL;
    const char* locate = NULL;
    unsigned char szSum[101];
    unsigned char szTemp[101];
    if(argc != 2)
        return -1;
    szStr = argv[1];
    memset(szSum,0,101);
    while((szStr = strpbrk(szStr,"0123456789")) != NULL)
    {
        locate = szStr;
        while(*locate >= 0x30 && *locate <= 0x39)
            ++locate;
        memset(szTemp,0,101);
        strncpy(szTemp,szStr,locate - szStr);
        mystrrev(szSum);
        mystrrev(szTemp);
        add(szSum,szTemp);
        mystrrev(szSum);
        szStr = (const char*)(locate + 1);
    }
    printf("the sum is:%s\n",szSum);
    system("pause");
    return 0;
}
 
void mystrrev(unsigned char* s)
{
    char *p = NULL;
    char i = strlen(s);
    p = calloc(1,i + 1);
    if(p == NULL)
    {
        printf("strrev:fatal error!\n");
        return;
    }
    while(--i >= 0)
    {
        *(p++) = *(s + i);
    }
    p -= strlen(s);
    memset(s,0,strlen(s) + 1);
    strcpy(s,p);
    free(p);
}
 
void add(unsigned char *s1,const unsigned char *s2)
{
    while(*s1 != 0 && *s2 != 0)
    {
        *s1 = ( ((*s1) - 0x30) + ((*s2) - 0x30) );
        if(*s1 >= 10)
        {
            if(*(s1 + 1) != 0)
                *(s1 + 1) = ((*(s1 + 1) - 0x30) + 1) + 0x30;
            else
                *(s1 + 1) = 0x31;
            *s1 %= 10;
        }
        *s1 += 0x30;
        ++s1;
        ++s2;
    }
    while(*s2 != 0)
        *(s1++) = *(s2++);
 
}

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

上传的附件:
  • 1.jpg (19.32kb,2451次下载)
  • 2.jpg (54.39kb,2455次下载)
收藏
免费 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
Youlor
为你点赞~
2024-5-31 03:22
伟叔叔
为你点赞~
2024-2-14 00:07
QinBeast
为你点赞~
2024-1-16 04:06
shinratensei
为你点赞~
2024-1-10 00:00
心游尘世外
为你点赞~
2023-12-27 00:51
飘零丶
为你点赞~
2023-12-16 00:37
PLEBFE
为你点赞~
2023-3-18 03:00
最新回复 (47)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
1
2
3
4
5
6
7
In [1]: s = '你54839865486548650468054658847397577599他5542385997788999345666666
66666666666666999999999999999999999999我8888888888888888888888888888888888888'
 
In [2]: import re
 
In [3]: sum(map(int, re.findall('-*\d+', s)))
Out[3]: 554238599778899934566666730395421042104539356943547736286466486L
2010-8-28 17:35
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
3
f哥,小弟只会简单的C和汇编,请问你用的是什么语言啊?
2010-8-28 17:36
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
python2.7,好在题目没规定用c
2010-8-28 17:39
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
5
python真是一门强大的语言,看来我要学习的还有很多
2010-8-28 17:42
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
6
可怜的孩子啊
2010-8-28 20:26
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
forgot大哥,你用的是ipython吧
2010-8-28 20:38
0
雪    币: 58
活跃值: (1235)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
还真不会做啊!
2010-8-28 22:27
0
雪    币: 156
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
这很像那种简单的字符串处理的ACM题……
另外话说我一看到高精度算术就头疼……
2010-8-28 22:53
0
雪    币: 555
活跃值: (2360)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
还以为printf 30+40+50=120呢
2010-8-29 00:40
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
11
唉,就是呀,w哥和s哥都不理我,相当的可怜
2010-8-29 10:12
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
12
s哥是谁?
2010-8-29 10:54
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
对于字符串还要考虑编码的问题吧,除非题目有默认是ANSI的编码。
先应该检测字符串的编码,然后根据相应的编码来确定哪些是数字。
2010-8-29 11:07
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
14
s哥是sessiondiy啦



我很赞同,所以我说刘涛涛前辈的这道题目看似简单,实则包含好几个问题
2010-8-29 12:04
0
雪    币: 2562
活跃值: (4283)
能力值: ( LV13,RANK:540 )
在线值:
发帖
回帖
粉丝
15
果然牛人到处都是啊~~
2010-8-29 14:35
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
两行的来了,纯属娱乐
python2.5

s = '你54839865486548650468054658847397577599他554238599778899934566666666666666666666999999999999999999999999我8888888888888888888888888888888888888'

sum(map(int,"".join(x*x.isdigit()+(not x.isdigit())*" " for x in s ).split()))
2010-8-29 19:40
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
17
楼主的题就是搜索数字(遇到数字开始,非数字结束),然后相加.
楼主的代码太没效率了..
2010-8-29 22:51
0
雪    币: 247
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
话说地球人就是强。
2010-8-29 23:08
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
19
继续娱乐
1
sum(map(int, ''.join(x if x.isdigit() else ' ' for x in s).split()))
2010-8-29 23:11
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
20
[QUOTE=forgot;852494]继续娱乐
1
sum(map(int, ''.join(x if x.isdigit() else ' ' for x in s).split()))
[/QUOTE]

继续娱乐
1
sum(map(int, __import__('re').findall('-*\d+', s)))
2010-8-30 02:04
0
雪    币: 440
活跃值: (119)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
21
向牛人学习~~~
2010-8-30 09:44
0
雪    币: 260
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
atoi
2010-8-30 12:56
0
雪    币: 208
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这题的本意不是搜索数字的方法,主要考N个大数相加的算法.........
2010-8-30 14:58
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
24
问一句:楼主用的是何编译器?
2010-8-30 20:15
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
25
在vc++ 6.0下将代码中所有unsigned去掉,编译链接通过
楼主果然强大,不知现在就业否,鄙人学习了
2010-8-30 20:26
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册