2017京东秋招笔试题

1、进制均值

数A按2到A-1进制表达 ,各个位数之和的均值多少?输入多组测试数据

输出
57/3
32/1

思路

进制位数均值

sum+=A%x 

A=A/x

输出结果是分数可能需要约分 利用最大公约数

代码

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int hexsum(int x,int a){
    int ans=0;
    while(x){
        ans+=x%a;
        x/=a;
    }
    return ans;
}
int gcd(int x,int y){
    if(x==0) return y;
    if(y==0) return x;
    if(x%2==0&&y%2==0) return 2*gcd(x>>1,y>>1);
    else if(x%2==0) return gcd(x>>1,y);
    else if (y%2==0) return gcd(x,y>>1);
    else return gcd(min(x,y),fabs(y-x));
}
int main() {
    int x;
    
    while(cin>>x){
        int sum=0;
        for(int i=2;i<x;i++){
            sum+=hexsum(x,i);   
        }
        int r=gcd(sum,x-2);
        cout  << sum/r<<"/"<<(x-2)/r<<endl;
    }
	return 0;
}

2、集合

多组{A}+{B}

样例输入

1 2

1

23

1 2

1

1 2

输出

1 2 3

1 2

思路

利用集合

set<int> s;

s.insert(x);

集合遍历

set<int> ::iterator it;

for(it=s.begin();it!=s.end();++it)

代码

#include <iostream>
#include <stdio.h>
#include <set>
using namespace std;

int main() {
int n,m;
while(cin>>n>>m){
    set <int> s;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        s.insert(x);
    }
    for(int i=0;i<m;i++){
        int x;
        cin>>x;
        s.insert(x);
    }
    set<int>::iterator it;
        for (it = s.begin(); it != s.end(); it++){
            printf("%d ", *it);
        }
        printf("\n");
}
return 0;
}

3、通过考试

一共n道题,每题作对概率pi,求至少60%概率 输出保留小数点后五位

输入

4

50 50 50 50 50 

输出

0.31250

思路

四题作对60% 至少3道

n道 60% (3*n+4)/5

保留5位小数

printf("%.5f\n".ans)

dp[i][j]表示前道作对j道的概率

输出dp[n][i] i>=(3*n+4)/5 

代码

#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
	const int N=100;
	int n;
	cin>>n;
	int p[n];
	double dp[N][N]={0};
	for(int i=1;i<=n;i++){
	    cin>>p[i];
	}
    dp[0][0]=1;
    for(int i=1;i<=n;i++){
        dp[i][0]=dp[i-1][0]*(100-p[i])/100;
        for(int j=1;j<=i;j++){

                dp[i][j]=dp[i-1][j]*(100-p[i])/100+dp[i-1][j-1]*1.0*p[i]/100;
            
        }
    }
    int begin=(3*n+4)/5;
    double ans=0;
    for(int i=begin;i<=n;i++){
        ans+=dp[n][i];
    }
	printf("%.5f\n",ans);
	return 0;
}

4、异或

两个n位数,异或后十进制

输入

4

1100

0100

输出

8

思路

先转换为十进制,再异或输出

二进制转十进制注意先乘以2 再加

ans*=2;

ans+=s[i]-'0'

代码

#include <iostream>
#include <string>
using namespace std;

int slove(string s,int n){
    int ans=0;
    for(int i=0;i<n;i++){
        ans*=2;
        ans+=s[i]-'0';
        
    }
    return ans;
}
int main() {
    int n;
    cin>>n;
    string s;
    cin>>s;
    int a=slove(s,n);
    cin>>s;
    int b=slove(s,n);
	cout<<(a^b)<<endl;
	return 0;
}

5、拍卖产品

n件 m人买 出价v[i] 求最大利润

输入

5 4

2 10 8 7

输出

7

思路

输入v[i]

对V[i]排序

调用#include<algorithm>

sort(v+1,v+m+1);

ans=max(v[i]*(m-i+1))

pos=v[i]

 

代码

#include <iostream>
#include<algorithm>
using namespace std;

int main() {
	const int N=1000;
	int m,n,pos,ans=0;
	int v[N];
	cin>>m>>n;
	for(int i=1;i<=m;i++){
	    cin>>v[i];
	}
	sort(v+1,v+m+1);
	for(int i=1;i<=m;i++){
	    if(ans<v[i]*min(n,m-i+1)){
	        ans=v[i]*min(n,m-i+1);
	        pos=v[i];
	    }
	}
	cout  << pos;
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供南方电网秋招笔试真题的具体内容,因为我无法获取或提供特定公司的招聘信息。但是,我可以给你一些关于南方电网秋招笔试的一般性建议和常见题型。 南方电网秋招笔试通常包括以下几个方面的内容: 1. 专业知识测试:涉及电力工程、电气工程、能源与动力工程等相关专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 2. 数学与逻辑推理:包括数学运算、概率统计、逻辑推理等方面的题目。 3. 英语能力测试:主要考察英语阅读理解、词汇量和语法等方面的能力。 4. 综合素质测试:主要考察应聘者的综合素质,包括综合分析能力、创新思维、团队合作等方面。 在备考南方电网秋招笔试时,建议你注意以下几点: 1. 熟悉岗位要求:了解南方电网对应聘者的要求,明确自己所应聘的岗位所需的专业知识和技能。 2. 多做模拟题:通过做一些模拟题来熟悉题型和考试时间,提高解题速度和准确性。 3. 复习重点知识:重点复习与岗位相关的专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 4. 提高英语能力:加强英语阅读理解和词汇量的积累,可以通过阅读英文文章、做题和听力练习等方式提高英语能力。 5. 注重综合素质:在备考过程中,注重培养自己的综合素质,包括综合分析能力、创新思维和团队合作等方面的能力。 希望以上建议对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值