1、蓄水管问题
题目
题目描述
蓄水池有甲、丙两条进水管和乙、丁两条排水管。
要灌满一池水,单开甲管需要a小时,单开丙管需要c小时;要排光一池水,单开乙管需要b小时,单开丁管需要d小时。
现在池内没有水,如果按甲乙丙丁的顺序循环单开各水管,每次每管开1小时,则多长时间后水开始溢出水池?
保证一定会在有限时间内出现水溢出水池的情况。
输入格式
一行,四个不大于10的正整数a,b,c,d,两个整数之间用单个空格隔开。a < b, c < d
输出格式
一个浮点数,即水溢出水池的时间。舍入到小数点后两位。
样例
样例输入
3 4 5 6
样例输出
24.90
题目分析
学过奥数的应该都学过这道题,这道题可以直接用数学方法模拟出来
AC核心代码
while(1){
if(e-a<=esp){
ans+=e/a;
break;
}
e=e-a+b;
ans+=2;
if(e-c<=esp){
ans+=e/c;
break;
}
e=e-c+d;
ans+=2;
}//求出时间
2、高考排名
题目
分析
用map排序
AC核心代码
cin>>n;
for(int i=1;i<=n;i++) cin>>z[i].kh>>z[i].name>>z[i].cj;
sort(z+1,z+n+1,cmp);
int tmp=z[1].cj,cnt=1;
ma[z[1].kh]={z[1].name,1};
for(int i=2;i<=n;i++){
if(z[i].cj==tmp) ma[z[i].kh]={z[i].name,cnt};
else{
ma[z[i].kh]={z[i].name,++cnt};
tmp=z[i].cj;
}
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>s;
if(ma[s].second!=0) cout<<ma[s].first<<" "<<ma[s].second<<endl;
else cout<<"Test error number!"<<endl;
}