Runoob Python100の例

4つのデジタルタイトルがあります:1,2,3,4は、構成することができますどのように多くの他のノー繰り返し3桁の数字と?数は?

*分析:1つの順列
に準拠していない2カリング
注:1-4 ==範囲(1,5)

sum=0
for i in range(1,5):
 for j in range(1,5):
  for k in range(1,5):
   if (i!=j) and (k!=j) and (i!=k):
    print (i,j,k)
    sum+=1
print(sum)

タイトル会社が利益に基づいてボーナス手数料を発行しました。利益(I)が10百万以下である場合、賞金の10%を挙げることができる。利益は10万人が、20未満百万千万手数料部分が10%未満である場合、より高い10万元部分、7.5%の手数料であってもよく、5%の手数料であってもよいし、2,000万人以上の部分400,000 200,000の間である。40万600,000間の場合4000万人以上の部分、3%の手数料であってもよいです;部分がキーボード月利益Iから1億以上の1.5%、百万人以上の元部1%の手数料を委員会は6000万以上1,000,000 600,000から、求めるべきであるとの間であります支払った賞与の合計数?

*分析:セグメント化された
(二重引用符に)<>キャストint型フロートのeval:PY3入力機能を入力します。2.

=入力()
2
タイプ(A)
<クラス'STR'>

参考:https://blog.csdn.net/qq_29883591/article/details/78177279

注意:アルゴリズムの最適化を。

#利润 l

l=float(input("请输入利润:"))
print("show me your money:",l)
bonus10w = 100000 * 0.1
bonus20w = bonus10w + 100000 * 0.500075
bonus40w = bonus20w + 200000 * 0.5
bonus60w = bonus40w + 200000 * 0.3
bonus100w = bonus60w + 400000 * 0.15

if l <=100000:
    bonus=l*0.1

elif l <=200000:
    bonus= bonus10w + (l-100000)*0.075

elif l <=400000:
    bonus= bonus20w + (l-200000)*0.05

elif l <=600000:
    bonus= bonus40w + (l-400000)*0.03

elif l <=1000000:
    bonus= bonus60w + (l-600000)*0.015

else:
    bonus= bonus100w + (l-1000000)*0.01

print ("bonus",bonus)

改善後、https://blog.csdn.net/weixin_41084236/article/details/81564963#003_68

profit=int(input('Show me the money: '))
bonus=0
thresholds=[100000,100000,200000,200000,400000]
rates=[0.1,0.075,0.05,0.03,0.015,0.01]
for i in range(len(thresholds)):
    if profit<=thresholds[i]:
        bonus+=profit*rates[i]
        profit=0
        break
    else:
        bonus+=thresholds[i]*rates[i]
        profit-=thresholds[i]
bonus+=profit*rates[-1]
print(bonus)


整数のタイトルは、100の後にプラス、それは完璧な正方形で、プラス168は完璧な正方形で、数はどのくらいです何ですか?

*分析:Y = 100 + 1.xの
2.y ^ 2 + 2 ^ 168 = Z
- >すなわちX + 268 = Z ^ 2

完全な方形かどうかを決定し、最も簡単な方法は次のとおりです。平方根の値は、小数点以下に0です。

私** 0.5 == int型(I ** 0.5)
方法:欠点:負の整数を描画しません。

import math
for i in range(1,100000):
    x = int(math.sqrt(i+100)) #
    y = int(math.sqrt(i+268)) #
    if (x * x == i + 100) and (y *y == i + 268 ):
        print (i)

方法2:アイデアがある:最悪の結果は正方形の関係は、この隙間よりも大きくあり得るので、N(N + 1)の二乗は、差分168のちょうど正方形であることです。

n=0
while (n+1)**2-n*n<=168:
    n+=1

for i in range((n+1)**2):
    if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):
        print(i-100)

おすすめ

転載: blog.csdn.net/weixin_44719417/article/details/90410283