问题描述
给定一个正整数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 团队