Time limit: 3.000 seconds

限时:3.000秒

Problem

问题

Gondwanaland Telecom makes charges for calls according to distance and time of day. The basis of the charging is contained in the following schedule, where the charging step is related to the distance:

冈瓦纳电信公司依照一天中的时段和通话距离来收取话费。下表列出了基本通话费方案。当中话费阶段是按距离远近安排的。

Charging Step

(distance)
Day Rate

8am to 6pm
Evening Rate

6pm to 10pm
Night Rate

10pm to 8am
A 0.10 0.06 0.02
B 0.25 0.15 0.05
C 0.53 0.33 0.13
D 0.87 0.47 0.17
E 1.44 0.80 0.30

All charges are in dollars per minute of the call. Calls which straddle a rate boundary are charged according to the time spent in each section. Thus a call starting at 5:58 pm and terminating at 6:04 pm will be charged for 2 minutes at the day rate and for
4 minutes at the evening rate. Calls less than a minute are not recorded and no call may last more than 24 hours.

全部话费都是依照通话的分钟数累计的。

若一次通话跨越了两个时段,则分别依照在各时段内的通话时间和费率进行收费。比方一次通话由晚5:58開始到晚6:04结束,则按2分钟的白天通话和4分钟的夜晚通话费率计算。通话少于1分钟的不计费,最长的通话不会超过24小时。

Write a program that reads call details and calculates the corresponding charges.

写一个程序读取全部的通话信息并计算相应的话费。

Input and Output

输入与输出

Input lines will consist of the charging step (upper case letter 'A'..'E'), the number called (a string of 7 digits and a hyphen in the approved format) and the start and end times of the call, all separated by exactly one blank. Times are recorded as hours
and minutes in the 24 hour clock, separated by one blank and with two digits for each number. Input will be terminated by a line consisting of a single #.

输入由多行组成。每一行数据都包含:话费阶段(大写字母“A”到“E”),拨出的号码(一个7位数组和横线组成的字符串),通话的開始和结束时间。这些数据间都由空格隔开。

时间均由24小时制的小时和分钟表示。之间由一个空格隔开,每一个数字都有两位数(译注:不足两位的前面补零)。仅仅有一个#号的单独一行表示输入结束。

Output will consist of the called number, the time in minutes the call spent in each of the charge categories, the charging step and the total cost in the format shown below.

输出的每一行要包含拨出的号码,每个话费阶段的分钟数。话费阶段编号以及总费用。并按例如以下格式输出。

Sample Input

输入演示样例

A 183-5724 17 58 18 04

#

Sample Output

输出演示样例

0         10        20        30

123456789012345678901234567890123456789

  183-5724     2     4     0  A    0.44

译注:原文中的演示样例输出为一张非常不清晰的图片。上面的数据来自我AC的程序输出,格式与原图全然同样。最上面灰色的两行为表头表示字符的位置,仅仅作演示样例參照,你的程序不要输出该表头。

红色的数字表示以下一列数据须要对齐的位置(在以下一列的左側为左对齐。在右側为右对齐)。

这题一開始想的很复杂,这题有两个注意点,一是要可以处理跨凌晨0点的问题。二是假设開始时间和结束时间相等的话,那么算通话一天。!

。(就是由于这一点,我一直没AC,f**k)

我的代码例如以下:

#include<iostream>
#include<stdio.h>
typedef struct price{
char step;
double a;
double b;
double c;
}price;
price s[5]={
{'A',0.10,0.06,0.02 },
{'B',0.25,0.15,0.05},
{'C',0.53,0.33,0.13},
{'D',0.87,0.47,0.17},
{'E',1.44,0.80,0.30}};
char phone_number[8];
char tt;
int sh,sm,eh,em;
int startindex;
int endindex;
int a,b,c;
inline double getprice(int i,int index)
{
//printf(" %d\n",i);
if(i<=480){c++;return s[index].c;}
if(480<i&&i<=1080){a++;return s[index].a;}
if(1080<i&&i<=1320){b++;return s[index].b;}
if(i>1320){c++;return s[index].c;}
}
int main(int argc, char *argv[])
{
//freopen("1.in","r",stdin);
scanf("%c",&tt);
while(tt!='#'){
char cc=tt;
scanf("%s",phone_number);
scanf("%d %d %d %d",&sh,&sm,&eh,&em);
a=b=c=0;
int index=0;
for(;index<5;++index)
{
if(s[index].step==cc)
break;
}
int E=eh*60+em;
int S=sh*60+sm;
double sum=0;
if(S<E){
for(int i=S+1;i<=E;++i)
{
sum+=getprice(i,index);
}
}
else if(S==E)
{
for(int i=S+1;i<=1440;++i)
sum+=getprice(i,index);
for(int i=1;i<=E;++i)
sum+=getprice(i,index);
}
else
{
for(int i=S+1;i<=1440;++i)
sum+=getprice(i,index);
for(int i=1;i<=E;++i)
sum+=getprice(i,index);
}
printf("%10s%6d%6d%6d%3c%8.2lf\n", phone_number, a, b,c, cc, sum);
scanf("\n%c",&tt);
}
return 0;
}

UVa145 Gondwanaland Telecom的更多相关文章

  1. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  2. 详解Telecom

    学习目标: 掌握Telecom入口和分析方法 总结和演进Telecom交互模型 掌握Listener消息回调机制 学习CallsManager 为什么选择Telecom分析? 这是由于在Android ...

  3. Android N开发 你需要知道的一切

    title: Android N开发 你需要知道的一切 tags: Android N,Android7.0,Android --- 转载请注明出处:http://www.cnblogs.com/yi ...

  4. 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

    HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打 ...

  5. 网络切片在5G中的应用

    SDNLAB君 • 16-11-25 •1509 人围观 5G和网络切片 当5G被广泛提及的时候,网络切片是其中讨论最多的技术.像KT.SK Telecom.China Mobile.DT.KDDI. ...

  6. 如何在ARM中创建Express Route

    很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...

  7. iOS开发中手机号码和价格金额有效性判断及特殊字符的限制

    在实际开发过程中,经常会遇到些不能让用户随便地输入手机号码,对输入的手机号码的正确判断:有些输入框只能输入数字,不能输入字母或特殊字符:还有些如价格金额之类的就只能输入数字和小数点且小数点后面保留两位 ...

  8. GO语言的开源库

    Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org ...

  9. bench.sh 跑分测速

    #!/bin/bash #==============================================================# # Description: bench te ...

随机推荐

  1. HZAU 1203 One Stroke(倍增)

    题目链接:http://acm.hzau.edu.cn/problem.php?id=1203 [题意]给你一颗完全二叉树每个节点都有一个权值,然后要你从上往下找一条链,值得链上权值的和<K,且 ...

  2. CDH-hive支持insert、update、delete操作

    开发要求hive支持update操作,搞张临时表测试下,报错如下: 配置hive-site.xml CDH进入hive配置页,选择高级,找到hive-site.xml的HIve客户端高级配置段代码段, ...

  3. 【剑指offer】顺时针打印数组

    顺时针打印数组 题意 例如我们有一个二维数组,如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 现在要按照顺时针打印出来,结果应该为: 1 2 3 4 8 12 16 ...

  4. 【爬虫】python 多线程知识

    第一段代码: __author__ = 'Administrator' import threading import time index = 0 class MyThread(threading. ...

  5. python 写文件write(string), writelines(list) ,读文件

    read()方法用于直接读取字节到字符串中,可以接参数给定最多读取的字节数,如果没有给定,则文件读取到末尾. readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包 ...

  6. [USACO 2018 Open Gold] Tutorial

    Link: 传送门 A: 对于每一条分割线,设本不应在其左侧的个数为$x$ 重点要发现每次一来一回的操作恰好会将一对分别应在左/右侧的一个数从右/左移过去 这样就转直接用树状数组求出最大的$x$即可 ...

  7. 【2-sat】Gym - 101201F - Illumination

    题意:平面上l盏灯,每盏灯可以照亮横向的2*r+1个格子或者纵向的2*r+1个格子,让你确定每盏灯的方向,使得每个格子只被同一行的不超过一盏灯照亮,并且只被同一列的不超过一盏灯照亮.输出是否有解. 显 ...

  8. 【高精度】【找规律】Gym - 101243B - Hanoi tower

    题意:给你一个经典的汉诺塔递归程序,问你最少几步使得三个柱子上的盘子数量相同.(保证最开始盘子数量可以被3整除) 规律:ans(n)=2^(2*n/3-1)+t(n/3). t(1)=0. t(n)= ...

  9. 【推导】计蒜客17116 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum

    题意:S(x)被定义为x的十进制表示下的数位之和.给你x,让你找一个正整数k,使得S(kx)能被233整除.k不超过2千位. 由于x不超过1000000,不论x是多少,10000000重复233次一定 ...

  10. javaWeb中的JDBC学习入门

    学习引荐地址:https://www.cnblogs.com/xdp-gacl/p/3946207.html 一.JDBC的相关概念介绍 1.1 数据库驱动 其实就好比我们平时使用到的独立声卡.网卡之 ...