欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
给定一个正整数N,将其表示为数字1,2,5,11相加的形式输出。要求上述数字出现的总次数最少(每个数字可以重复使用)
样式要求:
输入说明:一个正整数N (N<= 10000)。. 输出说明:正整数N由1,2,5,11组成的加法表达式,要求非递增排列。 输入样例: 21 输出样例: 21=11+5+5
解决方案
要使数字总数最少,就应该从最大的数开始
用整除确定该加数的数量
用同样的方法确定其他加数的数量
应为格式要求是[]=[]+[]+[]…所以只能由字符串来实现也就是字符串的拼接
因位最后一位没有加号所以只输出到倒数第二位就是所要求的了
Python代码:
N=int(input()) a=N//11 b=(N-a*11)//5 c=(N-a*11-b*5)//2 d=N-a*11-b*5-c*2 s1='21=' while a>0: s1+='11+' a-=1 while b>0: s1+='5+' b-=1 while c>0: s1+='2+' c-=1 while d>0: s1+='1+' d-=1 print(s1[0:len(s1)-1])
END
实习主编 | 王楠岚
责 编 | 王自强
where2go 团队
微信号:算法与编程之美
长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!