各位同学,创作不易,能否在文末打赏一瓶饮料呢?(^ _ ^)(文章末尾右下角处)
西北工业大学NOJ-Python程序设计作业题解集合:
NOJ-Python程序设计:第1季:水题(Season 1-Easy) (1-10)
NOJ-Python程序设计:第2季:小段代码(Season 2-Snippet) (11-20)
NOJ-Python程序设计:第3季:循环(Season 3-Loop) (21-30)
NOJ-Python程序设计:第4季:枚举算法(Season 4-Enumeration algorithm) (31-40)
NOJ-Python程序设计:第5季:模块化(Season 5-Modularization) (41-50)
NOJ-Python程序设计:第6季:字符串(Season 6-String) (51-60)
NOJ-Python程序设计:第7季:列表与元组(Season 7-List and Tuple) (61-70)
NOJ-Python程序设计:第8季:集合与字典(Season 8-Sets and Dictionary) (71-80)
NOJ-Python程序设计:第9季:类(Season 9-Class) (81-90)
NOJ-Python程序设计:第10季:挑战算法(Season 10-Challenges) (91-100)
建议大概了解下述函数库的基本运用之后再完成题目会更顺利。
a.append('b')
(a是列表)del a[0]
或者del a[0:2]
(删除[0,2))a=map(str,a)
print(','.join(a))
(中间用’,'分割,并且a中元素的类型是str)。注意它和print(a)的输出的结果是不同的def F(n):
if(n==0):
return 1
return n-M(F(n-1))
def M(n):
if(n==0):
return 0
return n-F(M(n-1))
n=int(input())
print(F(n),M(n))
# Code By Phoenix_ZH
def Collatz_conjecture(n):
a.append(n)
if(n==1):
return
if(n%2):
n=n*3+1
Collatz_conjecture(n)
else:
n//=2
Collatz_conjecture(n)
a=[]
n=int(input())
Collatz_conjecture(n)
a=map(str,a)
print(','.join(a))
# Code By Phoenix_ZH
def P(n):
if(n==0):
return 0
elif(n==1):
return 1
else:
return 2*P(n-1)+P(n-2)
n=int(input())
print(P(n))
# Code By Phoenix_ZH
可以参考:https://oi-wiki.org/math/number-theory/bezouts/
import math
def exgcd(a,b):
if(b==0):
return 1,0,a
else:
x,y,q=exgcd(b,a%b)
x,y=y,(x-(a//b)*y)
return x,y,q
n,m=map(int,input().split())
x,y,q=exgcd(n, m)
print(x,y)
# Code By Phoenix_ZH
def Catalan(n):
ans=1
for k in range(2,n+1):
ans=ans*(n+k)
for k in range(2,n+1):
ans=ans//k
return ans
n=int(input())
print(int(Catalan(n)))
# Code By Phoenix_ZH
递归的时候注意参数 ( n , m ) (n,m) (n,m)表示:当前数是n,设定当前判断因数m。边界条件为n=1或者m=1,如果m是n的因数,那么就可以累加方案数Defactor(n//m,m)
,Defactor函数返回方案数
def Defactor(n,m):
if(n==1):
return 1
if(m==1):
return 0
ans=Defactor(n,m-1)
if(n%m==0):
ans+=Defactor(n//m,m)
return ans
a=int(input())
print(Defactor(a,a))
# Code By Phoenix_ZH
def Divide(m,n):#m apples ;n plates
if(m==0 or n==1):
return 1
if(n>m):#盘子过多 必然有n-m个盘子空的
return Divide(m, m)
else:
return Divide(m,n-1)+Divide(m-n,n)
m,n=map(int,input().split())
print(Divide(m,n))
# Code By Phoenix_ZH
def dfs(t,w,v):
if(t==n+1):
return (w==v)
ans=0
for i in range(0,v-w+1):
ans+=dfs(t+1,w+i,v)
return ans
pass
n,v=map(int,input().split())
print(dfs(1,0,v))
# Code By Phoenix_ZH
def BinInverted(n):
return ''.join(reversed('{:b}'.format(n)))
n=int(input())
print(BinInverted(n))
# Code By Phoenix_ZH
def dfs(x,y,x2,y2):
if(x>x2 or y>y2):
return 0
if(x==x2 and y==y2):
return 1
return dfs(x+y,y,x2,y2)|dfs(x,x+y,x2,y2)
pass
x1,y1,x2,y2=map(int,input().split())
if(dfs(x1,y1,x2,y2)):
print("true")
else:
print("false")
# Code By Phoenix_ZH