news 2026/4/29 21:33:05

UVa 139 Telephone Tangles

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 139 Telephone Tangles

题目分析

本题是一道电话计费模拟题,要求根据拨打的号码和通话时长,结合给定的区号(或国家代码)与费率表,计算出每一通电话的费用。

输入格式

输入分为两部分:

  1. 费率表
    每行格式为:

    代码 地区名称$每分钟费用(美分)

    地区名称不超过252525个字符,费率以美分为单位。
    此部分以一行000000结束。

  2. 通话记录
    每行格式为:

    号码 时长(分钟)

    号码与时长之间至少有一个空格。
    此部分以一行#结束。

号码分类

  • 国际长途(IDD\texttt{IDD}IDD:以00开头,后接111333位国家代码,再后接444101010位用户号码。
  • 国内长途(STD\texttt{STD}STD:以0开头(但非00),后接111555位区号,再后接444777位用户号码。
  • 本地通话:不以0开头,免费。
  • 无效号码:若号码以000开头,但未在费率表中找到匹配的代码,或用户号码长度不符合规定,则视为Unknown,费用为−1.00-1.001.00

输出格式

输出每行包含:

  • 拨打的号码(左对齐,宽度161616
  • 地区名称
  • 用户号码
  • 通话时长(右对齐,宽度555
  • 每分钟费用(右对齐,宽度666,保留两位小数)
  • 总费用(右对齐,宽度777,保留两位小数)

若为未知号码,则每分钟费用处留空。


解题思路

步骤分解

  1. 解析费率表
    将每行的代码、地区名称、费率分别提取出来,存储在一个结构体数组中。

  2. 处理通话记录
    对每条记录:

    • 提取号码和时长。
    • 根据号码前缀判断类型:
      • 若以00开头,尝试匹配国际代码。
      • 若以0开头(非00),尝试匹配国内区号。
      • 否则为本地通话。
    • 匹配时需检查用户号码长度是否符合规定。
    • 若未匹配成功,则为Unknown
  3. 计算费用
    费率以美分存储,计算时需除以100.0100.0100.0转换为美元。

  4. 格式化输出
    使用cout的格式化输出功能(如setwsetprecision)控制对齐与精度。

关键点

  • 匹配代码时使用find判断前缀是否一致。
  • 用户号码长度需在匹配后验证。
  • 输出格式需严格对齐,包括空格数量。

代码实现

// Telephone Tangles// UVa ID: 139// Verdict: Accepted// Submission Date: 2016-01-19// UVa Run Time: 0.085s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;structprice{string code;string area;intcost;};intmain(){string line;vector<price>prices;// 处理第一部分输入while(getline(cin,line),line.find("000000")!=0){string code,area,fee;intindex=0;while(index<line.length()&&isdigit(line[index]))code+=line[index++];// 跳过空格,直到 $ 都属于国家或地区名称index++;while(index<line.length()&&line[index]!='$')area+=line[index++];// 跳过 $index++;while(index<line.length()){if(isdigit(line[index]))fee+=line[index];index++;}// cout << code << " " << area << " " << fee << endl;prices.push_back((price){code,area,stoi(fee)});}// 处理第二部分输入并输出while(getline(cin,line),line!="#"){intindex=0;string calledNumber,duration;while(index<line.length()&&isdigit(line[index]))calledNumber+=line[index++];while(index<line.length()&&isblank(line[index]))index++;while(index<line.length()&&isdigit(line[index]))duration+=line[index++];string area,subscriber;doublecost,totalCost;boolunknown=true;for(inti=0;i<prices.size();i++){if(calledNumber.find(prices[i].code)==0){area=prices[i].area;subscriber=calledNumber.substr(prices[i].code.length());if(calledNumber.find("00")==0){if(subscriber.length()<4||subscriber.length()>10)continue;}elseif(calledNumber.find("0")==0){if(subscriber.length()<4||subscriber.length()>7)continue;}cost=prices[i].cost/100.00;totalCost=stoi(duration)*cost;unknown=false;break;}}if(unknown){if(calledNumber.find("00")==0||calledNumber.find("0")==0){area="Unknown";subscriber.clear();totalCost=-1.0;}else{area="Local";subscriber=calledNumber;cost=0.00;totalCost=0.0;unknown=false;}}cout.setf(ios::fixed);cout<<setw(16)<<left<<calledNumber;cout<<area;cout<<string(35-area.length()-subscriber.length(),' ');cout<<subscriber;cout<<setw(5)<<right<<duration;if(unknown)cout<<string(6,' ');elsecout<<setw(6)<<right<<setprecision(2)<<cost;cout<<setw(7)<<right<<setprecision(2)<<totalCost;cout<<endl;}return0;}

总结

本题主要考察字符串处理格式化输出能力,同时需要注意细节处理(如号码长度验证、费用单位转换)。通过合理设计数据结构并逐步匹配,即可正确计算并输出每通电话的费用。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 8:32:44

信息系统信创建设方案

第1章 需求分析 1.1 项目需求 自主可控需求网络、计算、存储资源池需求云管理平台、云备份平台建设需求运维、运营管理需求云平台安全系统需求 第2章 云平台基础设施设计 2.1 改造目标与内容 政务外网云平台改造 2.2 设计原则与定位 政务外网云平台安可应用区定位 2.3 …

作者头像 李华
网站建设 2026/4/23 9:43:29

恒温孵化器(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;CP-51-2021-022设计简介&#xff1a;本设计是基于单片机的恒温孵化器系统&#xff0c;主要实现以下功能&#xff1a;可通过LCD1602温湿度和通风翻蛋倒计时&…

作者头像 李华
网站建设 2026/4/25 21:46:01

好写作AI:一份论文神器的“满意度配方”大揭秘!

为什么有人用AI写作工具直呼“真香”&#xff0c;有人却觉得“就这&#xff1f;”——我们花了三个月&#xff0c;挖出了背后的科学真相。在好写作AI的用户群里&#xff0c;你常会看到两种“名场面”&#xff1a;一种是深夜狂喜——“这逻辑诊断功能救了我一命&#xff01;”&a…

作者头像 李华
网站建设 2026/4/17 14:38:59

7.事务、并发和锁

事务、并发和锁 什么是 ACID 原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔离性&#xff08;Isolation&#xff09;持久性&#xff08;Durability&#xff09; DDL 事务 在 PostgreSQL 中&#xff0c;与其他数据库最大的不同是&…

作者头像 李华