中兴机试-2020-08-24

2021中兴软件类笔试试卷B-2
单选14题,多选6题,编程2题,满分100分,时间100分钟

单选题:考试内容:数据结构与算法,计算机网络,各种编程语言基础知识,数据库SQL语言,测试分析等,很杂乱,基本上都没见过。
编程题:
1-求最长子区间:长度为n的数组a,求1<=l<=r<=n,一段子区间的和除以这段区间长度的值最大。
分析得到:当取最大值的得到的结果最大。这是一个取巧的方法。

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

int main() {
	int n;
	cin >> n;
	vector<int>input(n);
	for (int i = 0; i<n; i++)
		cin >> input[i];
	//排序,取出最大值
	sort(input.begin(), input.end());
	cout << input[n - 1] << endl;
	system("pause");
	return 0;
}

//题目描述:
//输入:一个数字T,作为总共要输入的行数;接下来输入T行:每行
// 包括一个字符串s,进制数l和r,其中s只包括0-9和A-Z之间的字符,l<r
//输出:每行一个数字,是字符串转换为10进制后的数的和:sl+sl+1+…+sr-1+sr为奇数,输出1;为偶数输出0;

#include<iostream>
#include<string>
#include<vector>

using namespace std;

inline int transform(char c) {
 //0-9,10=A,11=B,..,35=Z转换为数字
 if (c <= '9' && c>='0')
  return c - '0';
 else 
  return c - 'A' + 10;
}

int main() {
 int T;
 cin >> T;
 while (T--) {//输入T行
  string s;
  int l, r;
  
  long long int sum = 0;
  int n = s.size();
  cin >> s >> l >> r;
  
  for (int j = l; j <= r; ++j) {
   long long int temp = 0;
   for (int i = 0; i < s.size(); ++i) {//0-9,10=A,11=B,..,35=Z转换为数字
    temp *= j;       
    temp += transform(s[i]);//将L-R进制数转换为10进制数
   }
   sum += temp;//l-r的所有进制数转换为10进制数后求和
  }
  if (sum % 2 == 0)
   cout << false << endl;
  else
   cout << true << endl;
 }
 return 0;
}

//代码可以运行,但是只能输入一行得一行结果。大佬们看看怎么使得输入n行,得n行结果.

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页