牛客网考研合集刷题练习

1.成绩排序
用stable_sort()才可通过

#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
	char name[20];
	int sco;
}; 
bool cmp0(stu a,stu b){
	return a.sco>b.sco;
}
bool cmp1(stu a,stu b){
	return a.sco<b.sco;
}
int main(){
	int n,k;
	while(cin>>n>>k){
	//	stu p[100];
		stu *p=new stu[n];
		for(int i=0;i<n;i++){
			cin>>p[i].name>>p[i].sco;
		}
		if(k==0){
			stable_sort(p,p+n,cmp0);
		}
		if(k==1){
			stable_sort(p,p+n,cmp1);
		}
		for(int i=0;i<n;i++){
			cout<<p[i].name<<" "<<p[i].sco<<endl;
		} 
		delete []p;
	}
}

2.约数的个数
线性方法会超时

#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
		if(n==0) return 0;
		int a;
		int b[1000]={0};
		for(int i=0;i<n;i++){
			cin>>a;
            int n=1;
	        for(int j=2;j<=a;j++){
	        	if(a%j==0) n++;
	        }
			b[i]=n;
		}
		for(int i=0;i<n;i++){
			cout<<b[i]<<endl;
		}
}

3.代理服务器
贪心!不会!

4.反序输出

#include<iostream>
#include<string>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    for(int i=s.size()-1;i>=0;i--){
        cout<<s[i];
    }
}

5.手机键盘

#include<iostream>
#include<cstring>
using namespace std;
struct key{
	char letter;
	int keyn;
	int time;
};
//abc def ghi jkl mno pqrs tuv wxyz
int main(){
	//
	char c[27] = { "abcdefghijklmnopqrstuvwxyz" };
	key a[26];
	for (int i = 0, n = 1; i<26; i++){
		a[i].letter = c[i];
		if (i >= 0 && i < 15){
			if (i>0 && i % 3 == 0) n++;
			a[i].keyn = n;
			a[i].time = i % 3 + 1;
		}
		if (i >= 15 && i < 19){
			a[i].keyn = 6;
			a[i].time = i - 14;
		}
		if (i >= 19 && i < 22){
			a[i].keyn = 7;
			a[i].time = i - 18;
		}
		if (i >= 22 && i < 26){
			a[i].keyn = 8;
			a[i].time = i - 21;
		}
	}
	//
	char input[200] = { 0 };
	while (cin >> input){
		int t = 0;
		int lastkeyn = 0;
		for (int i = 0; i<strlen(input); i++){
			for (int j = 0; j<26; j++){
				if (input[i] == a[j].letter){
					t = t + a[j].time;
					if (a[j].keyn == lastkeyn) t += 2;
					lastkeyn = a[j].keyn;
					break;
				}
			}
		}
		cout << t << endl;
	}
}

6.质因数的个数
a[ ]输出质因数分别是…
在这里插入图片描述

#include<iostream>
using namespace std;
//判断是否为质数
int is(int a){
	int f = 1;
	for (int i = 2; i <= a / 2; i++){
		if (a%i == 0){
			f = 0;
			break;
		}
	}
	if (f == 0) return 0;
	else return 1;
}
int main(){
	int n;
	while (cin >> n){
		int k = 0;
//		int a[100] = { 0 }, j = 0;
		for (int i = 2; i <= n / 2; i++){
			if (is(i)){
				while (n%i == 0){
					n = n / i;
					k++;
//					a[j++] = i;
				}
			}
			if (is(n)&&n>1){
				k++;
//				a[j++] = n;
				break;
			}
		}
		cout << k << endl;
//		for (int i = 0; i < j; i++){
//			cout << a[i] << " ";
//		}
//		cout << endl;
	}
}

7.整数拆分

不会,讨论区用完全背包、递推。

8.成绩排序

#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
	int sno;
	int grade;
};
bool cmp(stu a, stu b){
	if (a.grade == b.grade) return a.sno < b.sno;
	else return a.grade < b.grade;
}
int main(){
	int n;
	stu s[100];
	cin >> n;
	for (int i = 0; i < n; i++){
		cin >> s[i].sno >> s[i].grade;
	}
	sort(s, s + n, cmp);
	for (int i = 0; i < n; i++){
		cout << s[i].sno << " " << s[i].grade << endl;
	}
}

9.球的半径和体积

#include<iostream>
#include<cmath>
using namespace std;
struct point{
	int x, y, z;
};
int main(){
	point a, b;
	while (cin >> a.x >> a.y >> a.z >> b.x >> b.y >> b.z){
		double r = sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2) + pow(a.z - b.z, 2));
		double v = 4.0/3.0*acos(-1)*pow(r, 3);
		cout.setf(ios::fixed);
		cout.precision(3);
		cout << r << " " << v << endl;
	}
}

10.二叉树遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值