博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
甲级PAT 1016 Phone Bills (25 分)(模拟,注意输出格式)
阅读量:3899 次
发布时间:2019-05-23

本文共 1321 字,大约阅读时间需要 4 分钟。

【题意】

给定一天24个时段每分钟的话费和一个指定月份的多个人的所有通话记录,要求算出每个人的月话费账单并按样例格式输出。

【题解】

呕,我吐啦,居然wa在最后的输出格式上,小数点后要不足两位补0啊啊啊,真·写题三分钟debug一小时

思路:题目要求只有最近配对的on-off才能算是一次有效通话,且要求严格按姓名升序进行输出,所以我们在处理数据时按姓名为第一关键字时间为第二关键字升序排序即可最后边处理边输出。

【代码】

#include 
using namespace std;struct p{ char name[105]; int mon,d,h,m; int date; int op;}f[1005];bool cmp(p a,p b){ return strcmp(a.name,b.name)==0?a.date
<0;}int a[30];int main(){ for(int i=0;i<24;i++) scanf("%d",&a[i]); int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s%d:%d:%d:%d",f[i].name,&f[i].mon,&f[i].d,&f[i].h,&f[i].m); f[i].date=24*60*f[i].d+60*f[i].h+f[i].m; char s[15]; scanf("%s",s); if(s[1]=='n') f[i].op=1; else f[i].op=0; } sort(f+1,f+n+1,cmp); for(int i=1;i<=n;){ int p=i,pre=0,flag=1,sum=0; while(strcmp(f[i].name,f[p].name)==0){ if(f[i].op==1) pre=i; else{ if(pre>0){ if(flag){ flag=0; printf("%s %02d\n",f[p].name,f[p].mon); } printf("%02d:%02d:%02d %02d:%02d:%02d ",f[pre].d,f[pre].h,f[pre].m,f[i].d,f[i].h,f[i].m); printf("%d ",f[i].date-f[pre].date); int pri=0; for(int j=f[pre].date;j

 

转载地址:http://lhfen.baihongyu.com/

你可能感兴趣的文章
【Java.Spring.MVC】使用Spring MVC构建Web应用程序
查看>>
【DB.PL/SQL】程序流程控制 —— 异常处理
查看>>
【Java.IO】I/O 【字节】【处理流】 - 之 - 【压缩流】 - ZipInputStream,ZipOutputStream
查看>>
【Java.JDBC/ORM】纯JDBC系统的开发随想
查看>>
【Unix/Linux】【系统】环境变量
查看>>
【Architecture】CPU-bound(计算密集型) 和I/O bound(I/O密集型)
查看>>
【MacOS】Mac 系统下类似于 apt-get 的软件包管理器 -- Homebrew
查看>>
为窗口添加鼠标HOVER和LEAVE事件
查看>>
VC小技巧20个
查看>>
MFC Feature Pack for Visual C++ 2008的BUG之一
查看>>
POJ - 2739 Sum of Consecutive Prime Numbers
查看>>
STL map映照容器(一)map创建、元素插入、元素删除和遍历访问
查看>>
Leetcode - 557反转字符串中的单词III
查看>>
Leetcode - 160相交链表
查看>>
Leetcode - 11盛最多水的容器
查看>>
Leetcode - 141环形链表
查看>>
Leetcode - 14最长公共前缀
查看>>
Leetcode - 7整数反转
查看>>
PAT---B1022. D进制的A+B (20)
查看>>
PAT---B1037. 在霍格沃茨找零钱(20)
查看>>