欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【笔试题】京东2017秋招笔试真题

发布时间:2024/4/17 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【笔试题】京东2017秋招笔试真题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

笔试题 京东2017秋招笔试真题

1、进制均值

时间限制 C/C++语言 1000MS;其他语言 3000MS

内存限制 C/C++语言 65536KB;其他语言 589824KB

题目描述
尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
小B感兴趣的是,一个数A如果按2到A-1进制表达时,各个位数之和的均值是多少?她希望你能帮她解决这个问题?
所有的计算均基于十进制进行,结果也用十进制表示为不可约简的分数形式。

输入
输入中有多组测试数据。每组测试数据为一个整数A(1=<A=<5000)。

输出
对每组测试数据,在单独的行中以X/V的形式输出结果。

样例输入
5
3

样例输出
7/3
2/1

C++代码

#include<bits/stdc++.h> using namespace std; int hexSum(int n,int a) {int sum = 0;while(n){sum += (n%a);n = n/a;}return sum; } int main() {int A;while(cin>>A){int sum = 0;for(int i=2; i<=A-1; i++){sum += hexSum(A,i);}int r = __gcd(sum,A-2);cout<<sum/r<<'/'<<(A-2)/r<<endl;}return 0; }

运行结果

2、集合

时间限制 C/C++语言 1000MS;其它语言 3000MS

内存限制 C/C++语言 65536KB;其它语言 589824KB

题目描述
给你两个集合,要求 {A} + {B}。
注:同一个集合中不会有两个相同的元素。

输入
多组(不超过 5 组)数据。
每组输入数据分为三行,第一行有两个数字 n,m(0<n,m<10000),分别表示集合 A 和集合 B 的元素个数。后两行分别表示集合 A 和集合 B。每个元素为不超出 int 范围的整数,每个元素之间有一个空格隔开。

输出
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。

样例输入
1 2
1
2 3
1 2
1
1 2

样例输出
1 2 3
1 2

C++代码

#include<bits/stdc++.h> using namespace std; int main() {int m,n,i,j,c;int nums[20010] = {0};while(cin>>m>>n){for(i=0; i<m+n; i++){cin>>nums[i];}sort(nums,nums+m+n);c = unique(nums,nums+m+n)-nums;for(j=0; j<c; j++){if(j==c-1){cout<<nums[j];}else{cout<<nums[j]<<' ';}}}return 0; }

运行结果

3、通过考试

时间限制 C/C++语言 1000MS;其它语言 3000MS

内存限制 C/C++语言 65536KB;其它语言 589824KB

题目描述
小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,…,pn。你能帮他算出他通过考试的概率吗? 

输入 
输入第一行一个数n(1<=n<=100),表示题目的个数。第二行n个整数,p1,p2,…,pn。表示小明有pi%的概率做对第i题。(0<=pi<=100) 

输出
小明通过考试的概率,最后结果四舍五入,保留小数点后五位。 

样例输入 

50 50 50 50 

样例输出
0.31250

C++代码

#include<bits/stdc++.h> using namespace std; const int maxn=100+5; int main() {int i,j,temp,n;double p[maxn];double dp[maxn][maxn];cin>>n;for(i=0; i<n; i++){cin>>temp;p[i] = temp/100.0;}dp[0][0] = 1;for(i=1; i<=n; i++){dp[i][0] = dp[i-1][0]*(1-p[i-1]);for(j=1; j<=n; j++){dp[i][j] = dp[i-1][j]*(1-p[i-1])+dp[i-1][j-1]*p[i-1];}}double result = 0;for(i = (int)(ceil(0.6*n)); i<=n; i++){result += dp[n][i];}printf("%0.5f",result);return 0; }

运行结果

4、异或

时间限制 C/C++语言 2000MS;其他语言 4000MS

内存限制 C/C++语言 65536KB;其他语言 589824KB

题目描述
异或运算是常见的二进制运算,给出两个n位二进制数a,b。a异或b的运算依次考虑二进制的每一位,若这一位相同,那么这一位的异或结果就是0,不同就是1。
例如a=1100, b=0100。执行a异或b的运算,a的最高位是1,b的最高位是0,两个数字不同所以最高位异或结果是1;a和b次高位都是1,所以次高位异或为0;最后两位它们都是0,所以异或结果也都是0。那么a异或b的答案就是1000。
现在输入两个n位二进制数,输出它们异或结果的十进制答案。上述样例中异或的二进制结果为1000,转化成十进制就是8。

输入
输入有三行,第一行一个数n(1<=n<=20),接下来两行有两个n位二进制数。输入的二进制数可能有前导零。

输出
输出一个数,异或结果的十进制数值,不要输出前导零。 

样例输入
4
1100
0100

样例输出
8

C++代码

#include<bits/stdc++.h> using namespace std; int BinaryConversionDecimal(string s,int n) {int dec = 0, b = 1;for(int i=0; i<n; i++){dec = dec + (s[n-i-1]-'0') * b;b *= 2;}return dec; } int main() {int n;string s;cin>>n;cin>>s;int a = BinaryConversionDecimal(s,n);cin>>s;int b = BinaryConversionDecimal(s,n);cout<<(a^b)<<endl;return 0; }

运行结果

5、拍卖产品

时间限制 C/C++语言 1000MS;其它语言 3000MS

内存限制 C/C++语言 65536KB;其它语言 589824KB

题目描述
公司最近新研发了一种产品,共生产了n件。有m个客户想购买此产品,第i个客户出价Vi元。为了确保公平,公司决定要以一个固定的价格出售产品。每一个出价不低于要价的客户将会得到产品,余下的将会被拒绝购买。请你找出能让公司利润最大化的售价。

输入
输入第一行二个整数n(1<=n<=1000),m(1<=m<=1000),分别表示产品数和客户数。
接下来第二行m个整数Vi(1<=Vi<=1000000),分别表示第i个客户的出价。

输出
输出一行一个整数,代表能够让公司利润最大化的售价。

样例输入
5 4
2 8 10 7

样例输出
7

C++代码

#include<bits/stdc++.h> using namespace std; int main() {int v[1010];int n; // 商品数 nint m; // 客户数 mint i,low,temp,max=0,index;cin>>n>>m;for(i = 0; i<m; i++){cin>>v[i];}// 对数组 v 进行从小到大的排序sort(v,v+m);low = m>n?(m-m):0;for(i = low; i<m; i++){temp = v[i]*(m-i);if(temp>=max){max = temp;index = v[i];}}cout<<index<<endl;return 0; }

运行结果

二进制转换为十进制

#include<iostream> using namespace std; int main () {int num, rem, temp, dec = 0, b = 1;cout << "Enter the binary number : ";cin >> num;temp = num;while (temp > 0){rem = temp % 10;dec = dec + rem * b;b *= 2;temp /= 10;}cout << "The decimal equivalent of " << num << " is " << dec;return 0; }

运行结果

矩阵转置

#include<stdio.h> #define ROW 4 #define COL 4 int M[ROW][COL] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; main(){int i, j, t;printf("Before transposition:\n");for (i = 0; i < 4; ++i){for (j = 0; j < 4; ++j){printf ("%d\t", M[i][j]);}printf("\n");}for (i = 0; i < 4; ++i){for(j = i;j < 4; ++j){t = M[i][j];M[i][j] = M[j][i];M[j][i] = t;} }printf("After transposition:\n");for (i = 0; i < 4; ++i){for (j = 0; j < 4; ++j){printf ("%d\t", M[i][j]);}printf("\n");} }

运行结果

转载于:https://www.cnblogs.com/hglibin/p/10602139.html

总结

以上是生活随笔为你收集整理的【笔试题】京东2017秋招笔试真题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。