这里主要是Windows开发编程题 – 小部分选择题。

距离的总和
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
定义两个大于2的偶数之间的距离,为这两个数之间质数的个数。
从小到大输入n个大于2的偶数,输出所有数两两之间距离的总和(应该有n*(n-1)/2个距离,输出总和就好)。

输入
第一行是输入偶数的个数,最小为2,最大可能到几万。
之后每行为一个偶数,最小是4,最大可能是几百万,不重复的升序排列。

输出
输入数据两两间距离的总和,这应该是一个不小于0的整数。

样例输入
3
4
6
12
样例输出
6

题意解析:

以样例为例,数据是 4 6 12 ,对应素数是 5 7 11

4-6距离是 一个素数 5

6-12距离是 两个素数 7 和 11

所以总距离应该是 1(4-5) + 2(6-12) + 3(4-12) = 6

思路:筛法打表 – 前缀和

代码如下:

这里有同学想问一下 筛法打表 和 前缀和 是怎么回事?

先说筛法打表吧 – 这是一个快速判断从 [0,n]之间的所有素数的方法。

原理是基于一个素数的约数除了它本身和1外没有其他数。

所以先进行基本处理 0不是素数 1不是素数 2是素数

接下来从2开始对所有数据进行处理,如果是素数的,就放入到vector里面(这是我们筛出来的素数),然后将后面的从[0,n]之间的所有2的倍数设置为非素数

然后处理下一个数,再下一个,再下一个。

然后我们现在考虑数x,我们遍历到x的时候,发现它没有被设置为非素数,意思是前面[2,x-1]的所有数据都不是x的倍数,是不是就说明了x是一个素数呢…然后我们再把 x的倍数 设置为非素数...

这就是筛法打表的原理。计算量理论讲是 O(n^1.5),比一个个判断要快。

接下来我们对输入的数据进行处理…这里以我们的数据V[ 4 6 12]为例。

要处理的数据是素数数据 su[2 3 5 7 11] – 这里我们设置一个Num数组,Num[i]记录V[i-1]到V[i]之间的素数个数

要注意的是 Num[0] (V[0] = 4),它的值必须是0.

然后我们就能得到Num[0,1,2] ->(4,5,6,7,11,12) 这里我加粗的是数据 – 红色的是素数

然后我们将Num数组的数据从 V[i-1]到V[i]之间的素数个数 改为 从V[0]到V[i]之间的素数

这样数组就变成了Num[0,1,3] …

这样:

4(V[0])-6(V[1])之间的素数个数就是 Num[1] – Num[0] = 1

6(V[1])-12(V[2])之间的素数个数就是 Num[2] – Num[1] = 2

4(V[0])-12(V[2])之间的素数个数就是 Num[2] – Num[0] = 3

然后加起来就是 – 我们的结果6…

 

一个字符串的最大回文前缀长度
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:
求一个字符串的最大回文前缀长度。回文是指正反方向读起来都一样的字符串,比如“abcdcba”就是一个回文。

输入
一个文本文件,至少包含一个字节。每个字节是一个字符。最大长度可能有几十万字节。

输出
最大回文前缀的长度。

样例输入
sogou

样例输出
1

题意解析:

题目要问的是 最大 回文 前缀 长度

翻译过来就是 字符串的所有前缀里面最长的回文

那么,哪些是前缀呢,以样例为例,它有5个前缀

  1. sogou
  2. sogo
  3. sog
  4. so
  5. s

然后我们在这五个前缀里面找到最长的回文。发现只有s,s的长度是1,于是结果就是1.

思路:…好像没什么思路哦…尴尬 – 就那么一判断。

代码如下:

 

选择题刻意记了一道题,主要是想验证下static有什么不同:

问下面的代码,在哪一个输出的位置报错。

要注意这里b是NULL,所以应该是在B这里,找虚函数表的时候报错了。

有疑问的是C,它有static有没有影响。

拿上面的代码测试了一下,函数地址还是在类里面。…

static修饰 表示该函数仅在这个文件内可见,也就是你不能在另外的文件内调用这个函数。

 

有考到一个PE文件段的内容的:

下面链接里的17.1.2里面有讲到常用段的意义

链接:http://blog.tk-xiong.com/archives/921

 

其他题目没怎么注意了…

搜狗Windows开发笔试题
Tagged on:
0 0 投票数
Article Rating
订阅评论
提醒

7 评论
最新
最旧 最多投票
内联反馈
查看所有评论

你投的移动安卓么?

回文这题我真的是服, 还有第一题到底所有的数是指的偶数还是质数, 没看懂

居然是原题,我怎么之前没有看到呢。

这是刚发的