【全网最细PAT题解】1006 换个格式输出整数【PAT乙级】

70 篇文章 0 订阅

题目链接

1006 换个格式输出整数

题目描述

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

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

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

输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123

题目大意

给一个不超过1000的整数

  • 百位的数字是几就输出几个B
  • 十位的数字是几就输出几个S
  • 个位的数字是几就输出从1到这个数字

解题思路

因为给出的数字不超过1000,也就是最多就是三位数,假设给出的数字为n,可以用a b c三个变量分别存储个位十位百位,然后根据不同位置的数字做不同的转化

  • 获得个位的方法是让n对10取余,取出的余数就是个位的数字
a = n%10;
//相当于取个位的数字
  • 获得十位的方法是让n除以10后对10取余,取出的余数为十位的数字
b = n/10%10;
/*对于任意一个数,先对除以10,相当于取这个数出区个位的其他数字
对于234/10 = 23
(因为int对于小数来说234/10=23.4的做法为直接舍去小数点后面的数字,不存在四舍五入的情况)

再对10去余数,就是23%10=3,取出的就是十位的数字
*/
  • 对于百位,因为最多是三位数,可以直接对n除以100,得到的值就是百位
c = n/100;

注意,这里不需要判断小于三位的数字究竟需不需要必须是三位,如果是两位(10~99),则百位的值为0,也不会输出B,十位数同理

题解

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a = n%10;   //个位
    int b = n/10%10; //十位
    int c = n/100;   //百位
    for(int i=0;i<c;i++)        cout<<"B";      //根据百位的数字输出B
    for(int i=0;i<b;i++)        cout<<"S";      //根据十位的数字输出S
    for(int i=1;i<=a;i++)       cout<<i;        //根据个位的数字顺序输出
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值