-
第4章-15 换硬币 (20分)
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:13
输出样例:
fen5:2, fen2:1, fen1:1, total:4 fen5:1, fen2:3, fen1:2, total:6 fen5:1, fen2:2, fen1:4, total:7 fen5:1, fen2:1, fen1:6, total:8 count = 4
x=int(input()) if 8<x and x<100: fen5=0;fen2=0;fen1=0;count=0 fen5=int(x/5) #最多多少个5 ##根据题目要求由内到外循环,依次求得满足条件的最大的5的个数 while fen5>0: fen2=int(x/2) #最多多少个2 while fen2>0: fen1=x ##最多多少个1 while fen1>0: if fen5*5+fen2*2+fen1*1==x: print("fen5:{}, fen2:{}, fen1:{}, total:{}".format(fen5,fen2,fen1,fen1+fen2+fen5)) count=count+1 fen1=fen1-1 fen2=fen2-1 fen5=fen5-1 print("count = {}".format(count))
-
第4章-18 猴子选大王 (20分)
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
输入格式:
输入在一行中给一个正整数N(≤1000)。
输出格式:
在一行中输出当选猴王的编号。
输入样例:11
输出样例:
7
N=int(input()) if N<=1000: #首先分配编号,设置每个猴子在的标记,如果淘汰,则换标记 l=['n'] for i in range(N): l.append('y') #y表示在,n表示淘汰,为了契合题目,从列表索引1开始 count=0 while(l.count('y')>1): #如果还有一个以上的猴子则继续报数 ##模仿规则,报数淘汰报数为3的猴 for i in range(1,N+1): if l[i]=='y': count=count+1 if count == 3: l[i]='n' count=0 idx=l.index('y') print(idx)
-
第4章-30 找完数 (20分)
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
输入样例:2 30
输出样例:
6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14
import math m,n=map(int,input().split()) if 1 < m and m <= n and n <= 10000: flag=False for i in range(m,n+1): l=[1] for j in range(2,int(math.sqrt(i))+1): if i%j==0: l.append(j) if j*j!=i: l.append(i//j) if sum(l)==i: flag=True l.sort() print("{} = {}".format(i,l[0]),end="") for j in l[1:]: print(" + {}".format(j),end="") print() if(flag == 0): print("None")
-
第5章-11 字典合并 (40分)
字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串 在第二行中输入第二个字典字符串
输出格式:
在一行中输出合并的字典,输出按字典序。"1"的ASCII吗为49,大于1,排序时1在前,"1"在后,其它的也一样。
输入样例1:{1:3,2:5} {1:5,3:7}
输出样例1:
{1:8,2:5,3:7}
输入样例2:
{"1":3,1:4} {"a":5,"1":6}
输出样例2:
{1:4,"1":9,"a":5}
dic1=eval(input()) dic2=eval(input()) for k2,v2 in dic2.items(): if dic1.get(k2) == None: dic1[k2]=v2 else: dic1[k2]=dic1[k2]+v2 print("{",end="") l1=[i for i in dic1.keys() if type(i)==type(1)] l2=[i for i in dic1.keys() if type(i)==type('a')] l1.sort() l2.sort() cnt=0 ##这里的重点就是控制输出 for i in l1+l2: cnt=cnt+1 if type(i)==type(1): print("{}:{}".format(i,dic1[i]),end="") elif type(i)==type('a'): print('"{}":{}'.format(i,dic1[i]),end="") if cnt<len(dic1): print(",",end="") print("}")
浙大版《Python 程序设计》题目集一些题目整理
猜你喜欢
转载自blog.csdn.net/weixin_43489041/article/details/111399891
今日推荐
周排行