第1关:潜泳问题
某单位在某个湖里举行潜水比赛,这是一个团体项目,每一支队伍由n人组成,要求所有队员从A岸潜水到B岸。在潜水过程中必须用氧气瓶,但每支队伍只有一个氧气瓶。最多两个人同时使用一个氧气瓶,但此时两人必须同步前进,因此到达终点的时间等于较慢的一人单独从A到B的时间。大家都很Nice,随便两个人都愿意共用一个氧气瓶游泳。请安排一种策略,让最后一名队员尽早到达终点。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
/*************begin***************/
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int time1=0;
for(int i=1;i<n;i++){
time1+=a[0]+a[i];
}
time1-=a[0];
int time2=0;
int judge=n%2;
for(int i=2;i<=n-1;i+=2){
time2+=a[0]+2*a[1];
if(i<n-1){
time2+=a[i+1];
}else{
time2+=a[i];
}
}
if(judge==1){
time2-=a[1];
}
if(time1<time2){
cout<<time1;
}else{
cout<<time2;
}
/*************end******************/
return 0;
}
第2关:魔术师猜数
在一种室内互动游戏中,魔术师要每位观众心里想一个三位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少,则魔术师一定能猜出观众心里想的原数abc是多少。例如,观众甲说他计算的和值是1999,则魔术师立即说出他想的数是443,而观众乙说他计算的和值是1998,则魔术师说:“你算错了!”。请编程模拟这个数字魔术游戏。要求用函数实现,函数原型为:int Magic(int m); 其中形参m代表观众计算的和值。
#include <iostream>
#include <cmath>
using namespace std;
int Magic(int m){
/***********begin************/
int sum=0,a=1,b=0,c=0;
bool found=0;
for(int i=1;i<10;i++){
for(int j=0;j&l