原题

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

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

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

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

分析

  1. 输入的是一个三位的正数,百位是几就输出几个‘B’,同样的十位是几就输出几个‘S’,各位是几我们就需要输出1到几。
  2. 所以我们第一步先求出每一位数字的大小,百位的时候,我们直接用这个数除以100,因为这都是int类型的数字之间的计算,得到的值也是int,所以求出的是百位的正数。十位数的计算类似,我们用输入的这个数减去算出来的百位数乘以100,然后除以10得到十位数字,同理得到个人位数字。

     百位 =n/100
     十位 =(n-百位*100)/10
     个位 = n-(百位*100-十位*10)
  3. python的指出字符串个数的做法,就是‘B’*百位个数即可,同理十位也一样,各位的我们通过循环来进行计算。
  4. 最后的输出我们减少字符串的拼接,采用的事%s替代的问题,提高性能。

代码实现

#!/usr/bin/python
n = input()
b = n/100
s = (n-b*100)/10
g = n-(b*100+s*10)
gnum = ''
for num in range(1,g+1):
    gnum = gnum+str(num)
print '%s%s%s' % ('B'*b, 'S'*s, gnum)
Last modification:October 2, 2019
If you think my article is useful to you, please feel free to appreciate