對於階乘而言, python提供了極其具有便利的range方法;
可以生成乙個按照自己意願的數字序列;
弱今天才明白它本質就是c中的for語句條件;
舉幾個例子:(舉例皆前者為c語言,後者為python3)
(1) 對於for(int i = 0 ; i < 11;i++) 就等同於 for i in range(11)
ps: 這裡的range生成是從0開始 , 需要注意
(2)對於 for(int i = 1 ; i <=11 ; i++) 就等同於 for i in range(1,12)
ps:這裡的range如果從1開始需要特殊說明,並且需要注意stop於後面下標的前一位;既這裡的12實質上迴圈只到11
(3)對於for(int i = 1; i <=11 ;i+=2) 就等同於for i in range(1,12,2)
ps::這就是range的第三個引數,自加屬性;
總結:對於range方法,代表從a為起點,b-1為終點每次自加c ;; 沒有a預設a=0 ;沒有b預設死迴圈;沒有c預設c=1 ;
所以懂了這三個屬性後, 則很容易寫出階乘題目,並且python支援取餘符號;
階乘**:
import sys
a =input()
n,m = a.split(' ')
n = int(n)
m = int(m)
summ = 1 ;
for i in range(1,n+1):
summ = summ * i
print(summ%m)
以上皆為弱自行理解,如果有語法不對的請及時告知 , orz
更新:python3有自帶的階乘函式,在import math 裡面, factorial(n)代表對n求階乘;
並且可以用map對映來接受兩個數字的值;
import math
n, m = map(int, input().split()) #這裡代表的就是讀入以空格分隔然後換為int型別
print(math.factorial(n) % m)
對負數取餘的處理
自 在vc 中計算 1 3 其結果是 1 而不是 我所要的2。在格仔座標中,如果希望超過邊界的數從另一面回到視野中,取余是非常有用的作法 原數 2 10 1 2 34 取餘120 1201 1 3 1 2即 3 2 1 而由於vc 在取整的時候,預設是將小數部分捨去,所以 1 3 0.333 0 於...
python的取餘演算法原理 python 取餘演算法
coding utf 8 created on 2012 12 28 取餘。取乙個任意小於1 美元的金額,然後計算可以換成最少多少枚硬幣。硬幣有1 美分,5 美分,10 美分,25 美分四種。1 美元等於100 美分。舉例來說,0.76 美元換算結果 應該是 3 枚25 美分,1 枚1 美分。類似7...
python的取餘演算法原理 python 取餘演算法
coding utf 8 created on 2012 12 28 取餘。取乙個任意小於1 美元的金額,然後計算可以換成最少多少枚硬幣。硬幣有1 美分,5 美分,10 美分,25 美分四種。1 美元等於100 美分。舉例來說,0.76 美元換算結果 應該是 3 枚25 美分,1 枚1 美分。類似7...