📄 1190.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1190 on 2006-02-24 at 18:36:50 */
#include <cstdio>
#include <cstring>
const double cost[][3] = { { 0.1, 0.06, 0.02 }, { 0.25, 0.15, 0.05 }, { 0.53, 0.33, 0.13 },
{ 0.87, 0.47, 0.17 }, { 1.44, 0.8, 0.3 } };
const int type[] = { 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2 };
const int ctn[] = { 600, 240, 600 };
int minute[3];
class Time {
private:
inline void inc() { h = (h+1) % 24; m = 0; }
public:
int h, m;
void make();
void to(const Time&);
bool operator <(const Time&) const;
};
void Time::make() {
scanf("%d %d", &h, &m);
}
void Time::to(const Time& t) {
for(; h != t.h; inc()) minute[type[h]] += 60-m;
minute[type[h]] += t.m - m;
}
bool Time::operator <(const Time& t) const {
if(h != t.h) return h < t.h;
else return m < t.m;
}
int main()
{
char k, phone[16];
int i;
Time begin, end;
while(scanf("\n%c", &k) != EOF && k != '#') {
memset(minute, 0, sizeof(minute));
scanf("%s", phone);
begin.make(); end.make();
if(begin < end) begin.to(end);
else {
end.to(begin);
for(i = 0; i < 3; i++) minute[i] = ctn[i] - minute[i];
}
double charge = 0;
for(i = 0; i < 3; i++) charge += minute[i] * cost[k-'A'][i];
printf("%10s", phone);
for(i = 0; i < 3; i++) printf("%6d", minute[i]);
printf("%3c%8.2lf\n", k, charge);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -