⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1190.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 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 + -