水仙花数
c 语言里面的在线处理法
- **不是^^
- py自动做浮点数除法,地板除用//
- 强调文本(md用法)
# -*- coding: utf-8 -*-
# Py_Coding
# 2022/11/9, 21:19
# 备注:循环作业-水仙花数 找出 100 - 999之间的水仙花数,各位数字的立方和等于这个数本身
# 数的分解-把一个三位数分解成个 十 百位,然后分别做立方和想加
# 数的分解和存储,以及用python语句实现
for i in range(100, 1000): # 对100-999的数字进行拆解处理
sum = 0
num = i
while num > 0:
a = num % 10
sum += a ** 3
num //= 10 # 错误点1,c语言里面的地板除要用,py里面要用//
if sum == i:
print("该水仙花数为 %d" %i)
视频里的方法
逆序正整数N
# 输入一个正整数,将其反转
'''
先拆开,分解存储,然后再倒序按照10进制加回去
1.输入数字 2.拆开分解
3.total = total * 10 + 4 //可以理解成10进制通用做法
4.每一轮这样操作,这样就反转过来了
5.可以把问题拆解成两部分 数字分解 + 把一串输入的序列转换成10进制
或者拼接成字符串?
'''
num = int(input("请输入这个数字: "))
total = 0
while num > 0:
i = num % 10
num //= 10
total = total * 10 + i
print(total)
理解 total 的作用
标准答案
算组合数 m >= n , C(m,n)
- 苯方法
# 算组合数 m >= n , C(m,n)
'''
m的阶乘,用循环实现
n的阶乘,和m-n的阶乘
然后相除,这是苯方法
'''
m = int(input("输入m: "))
n = int(input("输入n: "))
mf, nf, mnf = 1, 1, 1
for i in range(1, m+1):
mf *= i
for i in range(1, n+1):
nf *= i
for i in range(1, (m-n)+1):
mnf *= i
print(mf // (nf * mnf))
# 循环的使用,后续可以封装成C(m,n)函数
import form as 的用法
- form 包 import 函数 as 别名(aisle)
from math import factorial as fc
m = int(input("m:"))
n = int(input("n:"))
print(fc(m) // (fc(n) * fc(m - n)))