news 2026/6/10 17:22:16

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/6/10 10:42:24

基于信息保存的图像检索哈希算法!

在图像检索领域&#xff0c;哈希算法通过将图像内容转化为一段紧凑的二进制编码&#xff08;哈希码&#xff09;&#xff0c;实现了高效且存储成本低的相似性搜索。其核心目标是确保内容相似的图像产生的哈希码也相似&#xff0c;从而通过计算哈希码之间的汉明距离快速找到近似…

作者头像 李华
网站建设 2026/6/10 10:36:36

好写作AI:你的论文脑,正在过载!这有一份“降压说明书”

当你同时打开18篇文献、7个数据表格&#xff0c;还要记着修改导师上一条批注——你的大脑不是CPU&#xff0c;它只是个会累的肉做的器官。 有没有那么一瞬间&#xff0c;面对论文编辑界面&#xff0c;你感觉自己的大脑像一间堆满杂物、无从下手的房间&#xff1f;想找什么都能看…

作者头像 李华
网站建设 2026/6/10 10:36:42

Science Robotics 超材料机器人

一、引言瑞士洛桑联邦理工学院的研究团队在《Science Robotics》发表综述论文“Metamaterial robotics”&#xff0c; 系统综述了超材料设计原理在机器人领域的应用&#xff0c;探讨了力学启发架构、形状可重构结构和材料驱动功能如何提升机器人的适应性与分布式智能&#xff0…

作者头像 李华
网站建设 2026/6/10 12:08:22

百考通AIGC检测功能:免费、专业、专注守护中文教育的学术原创性

在AI写作日益普及的今天&#xff0c;一篇“完美”的课程论文可能只需几秒生成&#xff0c;但真正的学习却无法被算法替代。当学生作业中悄然混入大模型代笔内容&#xff0c;当毕业设计的文字缺乏真实思考痕迹&#xff0c;学术诚信正面临前所未有的挑战。为此&#xff0c;百考通…

作者头像 李华
网站建设 2026/6/10 12:08:17

百考通AIGC检测功能:免费、专业、专为中文教育打造的AI内容“照妖镜”

在AI写作工具日益普及的今天&#xff0c;一篇结构完整、语言流畅的课程论文可能只需几秒生成——但其中是否还保留着学生真实的思考&#xff1f;当“代写”变得隐蔽而高效&#xff0c;学术诚信的边界正被悄然模糊。为帮助高校师生有效识别AI生成内容&#xff0c;百考通正式推出…

作者头像 李华
网站建设 2026/6/10 12:08:21

2026 年本地 AI 助手的巅峰方向:Clawdbot

2026 年本地 AI 助手的巅峰方向&#xff1a;Clawdbot Clawdbot 是最近爆火的开源本地 AI 个人管家&#xff08;赛博管家&#xff09;&#xff0c;被很多人称为“开源版 Jarvis”或“24/7 全职数字员工”。它不像 ChatGPT/Claude 那样只是聊天工具&#xff0c;而是真正能“动手…

作者头像 李华