网易2018校招iOS开发工程师笔试卷
时长:120分钟 总分:100分
100浏览 0人已完成答题
题型介绍
题型 | 单选题 | 填空题 |
---|---|---|
数量 | 20 | 3 |
以下代码的输出和x函数被调用的次数分别是?
int x (int n) { if (n <= 3) return 1 else return x (n - 2) + x (n - 4) + 1 } int main (void) { printf ("%d\n", x (x (8))) return 0 }
等差数列
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列
堆棋子
小易喜欢的数列
1、数列的长度为n
2、数列中的每个数都在1到k之间(包括1和k)
3、对于位置相邻的两个数A和B(A在B前),都满足(A <= B)或(A mod B != 0)(满足其一即可)
例如,当n = 4, k = 7
那么{1,7,7,2},它的长度是4,所有数字也在1到7范围内,并且满足第三条性质,所以小易是喜欢这个数列的
但是小易不喜欢{4,4,4,2}这个数列。小易给出n和k,希望你能帮他求出有多少个是他会喜欢的数列。
下列代码的时间复杂度是多少
int func(int N) { int cnt = 0 for(int i=1i<=Ni++) for(int j=1j<=Nj+=i) cnt+=(i+j) return cnt }