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.代理服务器
贪心!不会!
#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];
}
}
#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;
}
}
不会,讨论区用完全背包、递推。
#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;
}
}
#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;
}
}