ZZULIOJ:1096: 水仙花数(函数专题)
题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。
现在要求输出所有在m和n范围内的水仙花数。
要求程序定义一个narcissus()函数和一个main()函数,narcissus()函数判断一个整数n是否为水鲜花数,其余功能在main()函数中实现。
int narcissus(int n)
{undefined
//判断n是否为水仙花数, 若是函数返回1,否则返回0
}
对于C/C++代码的提交,本题要求必须通过定义narcissus函数和main函数实现,否则,提交编译错误,要提交完整的程序。
输入
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
输出
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
样例输入 Copy
100 120
300 380
样例输出 Copy
no
370 371
提示
在不知道m到n之间有多少个水仙花数的情况下,如何控制两个数之间有空格,而最后一个水仙花数之后没有空格?解决方法之一是:第一个水仙花数之前不加空格,而其后每个水仙花数之前加空格。而通过一个标识变量可以判断出是否是第一个水仙花数。
初做多实例测试,要注意变量赋初值的位置。
源代码
def huiwen(n):
a=int(n//100)
b=int((n-a*100)//10)
c=int(n-a*100-b*10)
if a*a*a+b*b*b+c*c*c==n:
return 1
else:
return 0
while True:
m,n=map(int,input().split())
flag=0
for i in range(m,n+1):
if huiwen(i):
flag=1
print(str(i)+" ",end="")
if flag==1:
print("")
if flag==0:
print("no")ZZULIOJ:1097: 计算平均成绩(函数专题)
题目描述
输入某位同学各门课的成绩,输出平均成绩。输入的成绩均为五级制成绩,五级制成绩转换为百分之成绩的规则如下:'A'转换为百分之成绩为95分,'B'对应85分,C对应75分,'D'对应65分,'E'对应40分。 输出的平均成绩为一个实数,保留1位小数。
要求程序定义一个getScore()函数和一个main()函数,getScore()函数返回一个等级对应的分数,其余功能在main()函数中实现。
int getScore(char g)
{
//把等级g转换成对应的分数并返回这个分数。
}
对于C/C++代码的提交,本题要求必须通过定义getScore函数和main函数实现,否则,提交编译错误,要提交完整的程序。
输入
输入为一行只包含'A'~'E'的字母,每个字母表示一门课的成绩,
输出
输出平均成绩,为一个实数,保留一位小数。
样例输入 Copy
AABB
样例输出 Copy
90.0
源代码
def Getscore(i):
if i=="A":
return 95
elif i=="B":
return 85
elif i=="C":
return 75
elif i=="D":
return 65
elif i=="E":
return 40
s=input()
lenth=int(len(s))
sum=0
for i in range(lenth):
score=Getscore(s[i])
sum=sum+score
aver=sum/lenth
print("%.1f"%aver)ZZULIOJ:1098: 复合函数求值(函数专题)
题目描述
求复合函数F(G(x)),其中函数F(x)=|x-3|+|x+1|,函数G(x)=x^2-3x。要求编写函数funF()和funG()分别求F(x)和G(x),其余功能在main()中实现。
double funF(double x)
{
//函数返回F(x)的值;
}
double funG(double x)
{
//函数返回G(x)的值;
}
本题如果是C/C++代码提交,只需要提交funF和funG函数的定义部分,提交其它内容,编译出错。
输入
输入一个实数x。
输出
输出复合函数的值,结果保留2位小数。输出占一行。
样例输入 Copy
10.2
样例输出 Copy
144.88
源代码
import math
def funG(x):
G=float(x*x-3*x)
return funF(G)
def funF(x):
F=float(math.fabs(x-3)+math.fabs(x+1))
return F
x=float(input())
result=funG(x)
print("%.2f"%result)ZZULIOJ:1099: 角谷猜想(多实例测试)
题目描述
任何一个自然数,如果是偶数,就除以2,如果是奇数,就乘以3再加1。最后,经过若干次迭代得到1。也就是说,不管怎样迭代,不断除以2以后,最后是1。现在给你一个自然数n,求出它转变为1所需要的步数。
输入
输入数据有多组,每组输入包含一个自然数n。测试数据保证输入数据及中间结果都在int范围内。
输出
对每组输入,输出经过角谷猜想变成1的步数。
样例输入 Copy
5
11
样例输出 Copy
5
14
源代码
def fun(n,num):
if n!=1:
if n%2==0:
n=n//2
num=num+1
return fun(n,num)
if n%2!=0:
n=n*3+1
num=num+1
return fun(n,num)
elif n==1:
return num
while True:
num=0
n=int(input())
sum=fun(n,num)
print(sum)ZZULIOJ:1100: 求组合数(函数专题)
题目描述
马上要举办新生程序设计竞赛了,与以往不同的是,本次比赛以班为单位,为了全面衡量一个班级的整体水平,要求从一个班的m位同学中任选k位同学代表本班参加比赛,问有多少种组合方案。在计算组合方案时会用到计算阶乘的运算,要求编写函数fact(),实现求一个数的阶乘功能,函数原型如下。
int fact(int n);//计算n的阶乘并返回
对于C/C++代码的提交,本题要求必须通过定义fact函数和main函数实现,否则,提交编译错误,要提交完整的程序。
输入
输入两个正整数m,k,k<=m<=12。
输出
输出一个整数,即组合方案数。
样例输入 Copy
5 3
样例输出 Copy
10
提示
求组合数公式是 m!/(k!(m-k)!)
源代码
def fact(n):
mul=1
for i in range(1,n+1):
mul=mul*i
return mul
m,k=map(int,input().split())
result=fact(m)//(fact(k)*fact(m-k))
print(result)
















