1005 Spell It Right (20 分)
这道题大致意思是:将输入的整数字符串按位求和,再将得到的和按位输出,0输出zero,1输出one,以此类推。
要注意的坑: 当只输出一个0的时候,直接输出zero。
1006 Sign In and Sign Out (25 分)
这道题大致意思是:判断门是谁开的(来最早的),谁关的(走最晚的)。主要是时间的处理问题。
要注意的: 时间的输入不需要逐个逐个判断,用scanf就能很好地解决时间输入的问题,再统一转换成秒,就能很方便地比较大小了。
代码如下:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(){
string early,last;
int n,unlock=24*3600,lock=0;
cin>>n;
for(int i=0;i<n;i++){
string id;
int h,m,s,start=0,finish=0;
cin>>id;
scanf("%d:%d:%d",&h,&m,&s);
start=h*3600+m*60+s;
//cout<<id<<h<<m<<s<<endl;
scanf("%d:%d:%d",&h,&m,&s);
//cout<<id<<h<<m<<s<<endl;
finish=h*3600+m*60+s;
if(start<unlock){
unlock=start;
early=id;
}
if(finish>lock){
lock=finish;
last=id;
}
}
cout<<early<<" "<<last;
return 0;
}
1008 Elevator (20 分)
这道题大致意思是:电梯移动,移动到不同楼层时的上升下降停止的时间不一样。
最大的坑是: 首先第一个数字是指接下来会出现多少个数字,直接读int整数就行了。其次是,停止时间是每读取一个数都停止等待,一定要都加上。
代码如下:
#include <iostream>
using namespace std;
int main(){
int n,current=0,sum=0;
cin>>n;
for(int i=0;i<n;i++){
int to;
cin>>to;
int sub=to-current;
if(sub>0){
sum+=6*sub;
}
else sum-=4*sub;
sum+=5;
current=to;
}
cout<<sum;
return 0;
}