京东2017年编程题总结
2017-09-07 10:26
211 查看
1,进制均值
题目描述:求一个数A如果按照从2到A-1进制表达时,各个数之和的均值是多少?
输入:多组数据,每组数据包含一个整数A
输出:在单独的行中以X/Y的形式输出结果,结果为不可约分的分数形式
编程思路:
一:解决整数n的m进制的各个位上的和
二:再从2到A-1进制逐个加
三:输出sum/(A-2)的形式(因为结果不可约分,所以在这里必须要求最大公约数)
以下是函数的实现代码:
输入:第一行两个数字m,n(表示集合A和集合B的元素个数)
后两行表示集合A和集合B
输出:针对每组数据输出一行数据,表示合并以后的集合,要求从小到大输出,每个元素之间用一个空格隔开
思路:可以用set来实现
题目描述:必须要做够60%的题目才能完成考试,考试结束后,小明估算出每道题作对的概率,p1, p2, .....pn,
算出他通过考试的概率?
输入:第一行数字n,表示题目的个数
第二行n个整数:p1, p2, p3, p4, ....pn 表示作对第i道题的概率
输出:最后通过考试的概率,四舍五入,保留小数点后五位
输入:三行:第一行n,表示接下来会有两个n位二进制数,输入的二进制可能有前导0
输出:输出一个数,异或的结果用十进制表示,不要输出前导0
购买一件产品,余下的将会被拒绝购买,请你找出能让公司利润最大化的售价
如果有各种定价方案可以最大化总收入,输出最小的定价
输入:
第一行表示两个整数m,n,分别表示产品数和客户数
第二行m个整数vi, 表示第i个用户的出价
输出:输出一个整数,表示能够让公司利润最大化的最小售价
题目描述:求一个数A如果按照从2到A-1进制表达时,各个数之和的均值是多少?
输入:多组数据,每组数据包含一个整数A
输出:在单独的行中以X/Y的形式输出结果,结果为不可约分的分数形式
编程思路:
一:解决整数n的m进制的各个位上的和
二:再从2到A-1进制逐个加
三:输出sum/(A-2)的形式(因为结果不可约分,所以在这里必须要求最大公约数)
以下是函数的实现代码:
#include<iostream> using namespace std; int hexsum(int n, int m) { int sum = 0; while(n) { sum+=n % m; n = n / m; } return sum; } int gcd(int x, int y) { while(x%y != 0) { y = x % y; x = y; } return y; } 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; } }2.求集合{A}+{B}
输入:第一行两个数字m,n(表示集合A和集合B的元素个数)
后两行表示集合A和集合B
输出:针对每组数据输出一行数据,表示合并以后的集合,要求从小到大输出,每个元素之间用一个空格隔开
思路:可以用set来实现
#include<iostream> #include<set> using namespace std; int main() { set<int>S; int m,n; cin>>m>>n; for(int i=0; i<m; ++i) { int val; cin>>val; S.insert(val); } for(int i=0; i<n; ++i) { int val; cin>>val; S.insert(val); } set<int>::iterator it = S.begin(); while(it != S.end()) { cout<<*it<<" "; ++it; } }3. 通过考试:
题目描述:必须要做够60%的题目才能完成考试,考试结束后,小明估算出每道题作对的概率,p1, p2, .....pn,
算出他通过考试的概率?
输入:第一行数字n,表示题目的个数
第二行n个整数:p1, p2, p3, p4, ....pn 表示作对第i道题的概率
输出:最后通过考试的概率,四舍五入,保留小数点后五位
#include<iostream> using namespace std; int a[100]; int n; double num[100][100]; int main() { cin>>n; for(int i=1; i<=n; ++i) { cin>>a[i]; } num[0][0] = 1; for(int i=1; i<=n; ++i) { num[i][0] = num[i-1][0]*(100-a[i])/100; for(int j=1; j<=i; ++j) { num[i][j] = num[i-1][j-1]*(100-a[i])/100 + num[i-1][j]*(a[i])*1.0/100; } } int right = (3*n+4)/5; //四舍五入 double res = 0.0; for(int i=right; i<=n; ++i) { res+=num [i]; } printf("%.5f\n", res); }4.异或
输入:三行:第一行n,表示接下来会有两个n位二进制数,输入的二进制可能有前导0
输出:输出一个数,异或的结果用十进制表示,不要输出前导0
#include<string.h> #include<iostream> using namespace std; char str1[100]; char str2[100]; int n; int solve(int n, char str[]) { int res = 0; for(int i=0; i<n; ++i) { res*=2; res+=str[i]; } return res; } int main() { cin>>n; for(int i=0; i<n; ++i) { cin>>str1[i]; } int a = solve(n, str1); for(int i=0; i<n; ++i) { cin>>str2[i]; } int b = solve(n, str2); printf("%d\n", a^b); }5.公司研发了一种产品,共生产了n件,有m个客户想要购买此产品,第i个客户出价vi元,为了确保公平,公司决定以一个固定的价格
购买一件产品,余下的将会被拒绝购买,请你找出能让公司利润最大化的售价
如果有各种定价方案可以最大化总收入,输出最小的定价
输入:
第一行表示两个整数m,n,分别表示产品数和客户数
第二行m个整数vi, 表示第i个用户的出价
输出:输出一个整数,表示能够让公司利润最大化的最小售价
#include<iostream> #include<algorithm> using namespace std; int n,m; int price[1000]; int main() { cin>>n>>m; for(int i=1; i<=m; ++i) { cin>>price[i]; } sort(price+1, price+m+1); int res = 0.0; double pos; for(int i=1; i<=m; ++i) { if(res < price[i]*min(n, m-i+1)) { res = price[i]*min(n, m-i+1); pos = price[i]; } } cout<<pos<<endl; }
相关文章推荐
- 2017年BAT,京东,美团,滴滴等公司面试经验总结
- 【WEB】网易2017年前端工程师实习生招聘笔试编程题总结
- 2017年秋招京东笔试编程题
- 京东2017实习生招聘——在线笔试编程题总结
- 2017年京东实习编程题 ----Java
- 京东2016春招(实习)笔试+编程题
- 京东2016实习生在线编程题
- 2017年总结
- 2017年第一次前端面试总结
- CSS——京东首页实战总结
- 2017年工作总结
- 网易2017年实习生NLP岗编程题--赶去公司
- 美团和京东的社招面试总结(我的第一篇博客)
- 2017年总结
- 2017年校招全国统一模拟笔试(第一场)编程题集合——连续整数
- 2017年总结与展望
- 2017年总结
- 2017年湖南省第十三届大学生计算机程序设计竞赛赛后总结
- 2017年校招全国统一模拟笔试(第一场)编程题集合——好多鱼
- 京东2018秋招前端笔试编程题