刷题日记--Python蓝桥杯:阶乘末尾

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  给定n和len,输出n!末尾len位。
输入格式
  一行两个正整数n和len。
输出格式
  一行一个字符串,表示答案。长度不足用前置零补全。
样例输入
6 5
样例输出
00720

解答:

思路:1、将阶乘结果转换为字符串
2、如果len小于等于字符串长度,则直接输出末尾len位
3、如果len大于长度,则右对齐并在左侧补零

import math
n,m=map(int,input().split())
s=str(math.factorial(n))
if m<=len(s):
    print(s[-m:])
else:
    print(s.rjust(m,'0'))

知识点补充:

1、字符串左对齐,右侧补零

s1='abcdef'
s2=s1.ljust(9,'0')
print(s2)

输出结果为
输出结果为
2、字符串右对齐,左侧补零

s1='abcdef'
s2=s1.rjust(9,'0')
print(s2)

输出结果为:
在这里插入图片描述
在看了别的博客后,补充一下其他两种右对齐方法
法2:

s1='abcdef'
s2=s1.zfill(9)
print(s2)

输出结果为
在这里插入图片描述
此函数为默认补零,相对来说,上一种方法更灵活一些,可以自己设定补齐内容。
法3:这个方法好像只适用于整数,套入字符串的话会报错。

s1=123
s2='%09d' % s1
print(s2)

输出结果为:
在这里插入图片描述

发布了12 篇原创文章 · 获赞 0 · 访问量 137

猜你喜欢

转载自blog.csdn.net/qq_44812523/article/details/105334247
今日推荐