python原创第十四篇~判断,循环实战训练+答案

2017-12-07 09:23:55 December Thursday the 49 week, the 341 day
#原创第十四篇~判断,循环实战训练
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。

7、接下来将 i 的所有数字循环计算即可。

for i in range(1,85):
    if 168 % i == 0:
        j = 168 / i;
        if  i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
            m = (i + j) / 2
            n = (i - j) / 2
            x = n * n - 100
            print(x)


-99
21
261
1581


2017-12-07 09:31:10 December Thursday the 49 week, the 341 day
for m in range(168):
    for n in range(m):      #because m**2 - n**2 =168 so m > n
        if (m+n)*(m-n)==168:
            x=n**2-100
            print("符合条件的整数有:",x)
2017-12-07 09:27:30 December Thursday the 49 week, the 341 day
设该数为x:x + 100 = n^2, n^2 + 168 = m^2。

设m=n+k(不妨设m,n,k均为自然数):带入m^2-n^2=168,得k^2+2nk=168。

解得n=84/k - k/2;由于n,k均为自然数,则nk>=1,故1< =k^2<168,故1<=k<=12。
#!/usr/bin/env python
for k in range(1, 13):
    n = 84/k -k/2
    if int(n) == n:
        x = n ** 2 - 100
        print(x)


2017-12-06 09:46:39 December Wednesday the 49 week, the 340 day
#原创第十四篇~判断,循环实战总结
#题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i != j and i != k and j != k:
            #if i == j or i == k or j == k:
                #continue
                print(i,j,k)




1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
[Finished in 2.4s]


2017-12-06 09:47:42 December Wednesday the 49 week, the 340 day
#原创第十四篇~判断,循环实战总结
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,
高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,
高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
profit = int(input("please input your profit:\n"))      #int()把输入的字符格式的数字转化为数字格式的数字
if profit <= 100000:
    award = profit * 10 /100
elif profit <= 200000:
    award = 100000 * 10 / 100 + (profit - 100000) * 7.5 / 100
elif profit <= 400000:
    award = 100000 * 10 / 100 + 100000 * 7.5 / 100 +(profit - 200000) * 5 / 100 
elif profit <= 600000:
    award = 100000 * 10 / 100 + 100000 * 7.5 / 100 + 200000 * 5 / 100 + (profit - 400000) * 3 / 100 
elif profit <= 1000000:
    award = 100000 * 10 / 100 + 100000 * 7.5 / 100 + 200000 * 5 / 100 + 200000 * 3 / 100 + (profit - 600000) * 1.5 / 100 
elif profit > 1000000:
    award = 100000 * 10 / 100 + 100000 * 7.5 / 100 + 200000 * 5 / 100 + 200000 * 3 / 100 + 400000 * 1.5 / 100 + (profit - 1000000) * 1 / 100 
print(award)



D:\Sublime_work_D\Python_work>python test.py
please input your profit:
8000
800.0

D:\Sublime_work_D\Python_work>python test.py
please input your profit:
800000
36500.0

D:\Sublime_work_D\Python_work>python test.py
please input your profit:
190000
16750.0

D:\Sublime_work_D\Python_work>python test.py
please input your profit:
360000
25500.0

D:\Sublime_work_D\Python_work>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值