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)