Content

给出整数 \(x\) 的英文写法,求出这个整数 \(x\)。

规则详见题面

数据范围:\(|x|\leqslant 999999999\)(\(9\) 个 \(9\))。

Solution

题目思路很简单,但要注意细节。

开两个变量 \(ans\)(最终的答案) 和 \(now\)(当前的计数),边输入一个字符串边一个一个计数,至于对应的操作吗——

  1. 如果这个字符串是 \(\texttt{thousand}\) 或者 \(\texttt{million}\) 的话,就直接将 \(now\) 全部计入 \(ans\) 里面,并将 \(now\) 清空。

  2. 否则,将读取到的字符串对应的数字加入到 \(now\) 当中(如果是 \(\texttt{hundred}\) 就将 \(now\) 乘上 \(100\))。

  3. 注意 \(\texttt{negative}\) 的情况,此时应该在最后输出负数。

具体的思路就是这些。

Code

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <iostream>
using namespace std; string s;
long long num, now, f; int main() {
f = 1;
while(cin >> s) {
if(s == "negative") f = -1;
if(s == "one") now++;
if(s == "two") now += 2;
if(s == "three") now += 3;
if(s == "four") now += 4;
if(s == "five") now += 5;
if(s == "six") now += 6;
if(s == "seven") now += 7;
if(s == "eight") now += 8;
if(s == "nine") now += 9;
if(s == "ten") now += 10;
if(s == "eleven") now += 11;
if(s == "twelve") now += 12;
if(s == "thirteen") now += 13;
if(s == "fourteen") now += 14;
if(s == "fifteen") now += 15;
if(s == "sixteen") now += 16;
if(s == "seventeen") now += 17;
if(s == "eighteen") now += 18;
if(s == "nineteen") now += 19;
if(s == "twenty") now += 20;
if(s == "thirty") now += 30;
if(s == "forty") now += 40;
if(s == "fifty") now += 50;
if(s == "sixty") now += 60;
if(s == "seventy") now += 70;
if(s == "eighty") now += 80;
if(s == "ninety") now += 90;
if(s == "hundred") now *= 100;
if(s == "thousand") num += now * 1000, now = 0;
if(s == "million") num += now * 1000000, now = 0;
}
num += now;
printf("%lld", num * f);
}

Supplement

建议做完这道题目的读者去做一下【P1617】爱与愁的一千个伤心的理由,大意就是将阿拉伯数字转为英文读法。

顺便推广一下我在这道题的题解

最新文章

  1. C语言文件操作
  2. FK JavaScript:ArcGIS JavaScript类库加载不成功而导致的程序异常
  3. paip. java的 函数式编程 大法
  4. hdu 1045:Fire Net(DFS经典题)
  5. endsWith和startsWith同样效果其他形式的写法(2016.1.12)
  6. laravel小抄
  7. Vijos1404 遭遇战 最短路,dijkstra,堆
  8. IDEA14创建Maven管理的Java Web项目
  9. ActiveNotifications
  10. Resizable 2th click not working
  11. 经典算法:快排的Javascript版本
  12. jquery,js常用特效名称
  13. Codeforces Round #252 (Div. 2) B. Valera and Fruits(模拟)
  14. iOS应用的几个阶段
  15. AUTOSAR-关于配置文件的思考
  16. 前端笔记之移动端&amp;响应式(下)默认样式&amp;事件&amp;惯性抛掷&amp;swiper&amp;loaction对象
  17. php 服务端允许跨域访问
  18. SQL WHERE 子句
  19. 并发的HashMap为什么会引起死循环?
  20. git merge 的过程及冲突处理演示

热门文章

  1. [源码解析] PyTorch 分布式(10)------DistributedDataParallel 之 Reducer静态架构
  2. Vue自定义组件实现v-model指令
  3. Codeforces 1383C - String Transformation 2(找性质+状压 dp)
  4. 第42篇-JNI引用的管理(1)
  5. 【GWAS】如何计算显著关联位点的表型解释率PVE(phenotypic variation explained)?
  6. Anaconda建立新的环境,出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url ...... 解决过程
  7. cat的生产应用
  8. 『与善仁』Appium基础 — 17、元素定位工具(一)
  9. 日常Java 2021/9/28
  10. day10 ajax的基本使用