我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10)

换个格式来输出任一个不超过 3 位的正整数。

例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

输入格式:

每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。

输出格式:

每个测试用例的输出占一行,用规定的格式输出 n。

输入样例 1:

234

输出样例 1:

BBSSS1234

输入样例 2:

23

输出样例 2:

SS123

思路:

首先要知道输出的时候后输出的是放在先输出的后面的,比如说cout<<1<<2;结果就是12。

这个题我有两种思路:

第一种是把输入的数据当成整形int来处理,第二种是把输入的数据作为string类型处理。

从题目中可以分析得到,不同的输入位数对应着不同的输出格式,而第二种思路的主要启发点就来源于此。这两种思路的核心代码是类似的。

第一种思路:

如果当成int处理,那么首要任务就是求出该数的百、十、个位,得出“有几个百”,“有几个十”和“有几个一”,使用求余运算即可。得到它们之后使用for循环控制输出相对应要求的字符。

第二种思路:

如果当成string处理,由于输入位数决定输出格式,所以需要根据“长度”(调用length()函数)对输入的数据使用switch语句进行区分,分类后再采取不同的输出策略,这相当于把第一种思路的代码“内联”进第二种思路的代码里了。

string的便利性在于,它可以通过下标的方式直接访问该字符串的某一位,而不需要像是第一种int那样需要进行取余运算等才能得到该位的位数。所以一旦区分好,假设输入的数据使用string s 接收,就可以直接使用for循环,循环次数设置为s[0]-'0'(还记得吗?若使用int强制类型转化,s[0]指的是该字符对应的ASCII码而非真实数值)来控制输出了。

两种思路代码如下:

#include<iostream>
using namespace std;int main()
{int a;cin >> a;int nb, ns,ng; //百,十,个nb = a / 100;for (int i = 0; i < nb; i++){cout << "B";}ns = a / 10 - 10 * nb;for (int i = 0; i < ns; i++){cout << "S";}ng = a - 100 * nb - 10 * ns;for (int i =1; i < ng+1; i++){cout << i;}return 0;
}
#include<iostream>
#include<string>
using namespace std;int main()
{string s;cin >> s;switch (s.length()){case 1:for (int i = 1; i <= s[0] - '0'; i++){cout << i;}break;case 2:for (int i = 0; i < s[0] - '0'; i++){cout << "S";}for (int i = 1; i <= s[1] - '0'; i++)
//这里要注意,我们是要控制输出从1到n,小心惯性思维!{cout << i;}break;case 3:for (int i = 0; i < s[0] - '0'; i++){cout << "B";}for (int i = 0; i < s[1] - '0'; i++){cout << "S";}for (int i = 1; i <= s[2] - '0'; i++){cout << i;}break;}return 0;
}

PAT乙级1006 换个格式输出整数相关推荐

  1. PAT 乙级 1006 换个格式输出整数

    1006 换个格式输出整数 (15 point(s)) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(&l ...

  2. pat 乙级 1006 换个格式输出整数(C++)

    题目 让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3位的正整数. ...

  3. [PAT乙级]1006 换个格式输出整数

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数.例如 ...

  4. PAT乙级 1006 换个格式输出整数

    用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<10), 换个格式来输出任一个不超过 3 位的正整数. 例 ...

  5. PAT乙级(1006 换个格式输出整数)

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数. ...

  6. PAT 乙级 1006 换个格式输出整数

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数. ...

  7. PAT(乙级)1006 换个格式输出整数 (15 分) (C语言)

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数.例如 ...

  8. 【题解PAT】1006 换个格式输出整数

    [题解PAT]1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(< ...

  9. C++学习之路 | PTA乙级—— 1006 换个格式输出整数 (15分)(精简)

    1006 换个格式输出整数 (15分) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式 ...

最新文章

  1. 快速多尺度人脸检测2--Multi-Scale Fully Convolutional Network for Face Detection in the Wild
  2. 网易来聊聊子弹短信的消息漫游技术
  3. 如何用SAP WebIDE的Fiori创建向导基于ABAP OData service快速创建UI5应用
  4. linux中安装多个mysql_liunx系统下安装多个MySql数据库并做主从配置
  5. 大数据技术和python开发工程师
  6. [导入]每个开发人员现在应该下载的十种必备工具
  7. 小米平板1刷LineageOS16
  8. 【原创】 ES5高效封装WIN10系统教程2020系列(四)使用工具优化与清理
  9. JVM参数-XX:+HeapDumpOnOutOfMemoryError使用方法
  10. https访问http接口处理
  11. 全国英语计算机等级考试报名费,通知 | 全国大学生英语竞赛计算机等级考试报名...
  12. 儿童玩具出口欧盟CE认证测试标准
  13. 《操作系统真象还原》第二章 编写MBR主引导记录,让我们开始掌权
  14. Gbox开源:比RN和WebView更轻的高性能动态化业务容器,解决首页动态化的痛点
  15. 【BLDC理论篇】无刷直流电机与永磁同步电机比较
  16. android解压zip文件进度条,Android实现文件解压带进度条功能
  17. 高德地图相关api使用计算两点地理坐标之间的距离
  18. Tensorflow使用CNN卷积神经网络以及RNN(Lstm、Gru)循环神经网络进行中文文本分类
  19. c/c++ 大整数乘法
  20. 卡巴斯基查杀瑞星卡卡 导致大量用户无法升级

热门文章

  1. oracle百分比变成小数,oracle中计算百分比,并同时解决小数点前0不显示的问题...
  2. ros下的python代码的编写与回调函数
  3. java 基本集合操作
  4. 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)...
  5. [sh]shift参数左移用法
  6. IO流的应用_Copy文件
  7. 国家集训队2011 happiness
  8. UVa 1583 Digit Generator(枚举+打表)
  9. 2016年3-8,哦,好日子
  10. 数学思想 —— 对称性思维