# -*- coding: utf-8 -*-
"""
Created on Sun Nov 20 19:48:23 2016
@author: alis
趣味问题之趣味数学
"""
#1.有4个砝码,总重量是40克,砝码的质量是整数,且各不相等。
# 请确定它们的质量,使之能称出1~40克任何整数质量的物体。
def fun(m, n):
a = []
index = n
while n > 1:
k = 2 * sum(a) + 1
if k <m:
a.append(k)
n -= 1
k = m - sum(a)
if k - 2 * sum(a) < 2:
a.append(k)
if len(a) == index:
return a
return None
print fun(40,4)
'''2. 黑色星期五源于西方的宗教信仰与迷信:耶稣基督死在星期五,而13是不吉利的数字。
两者的结合令人相信当天会发生不幸的事情。星期五和数字13都代表着坏运气,两个不幸的
个体最后结合成超级不幸的一天。所以,不管哪个月的13日又恰逢星期五就叫“黑色星期五”。
找出未来几年哪些天是“黑色星期五”。'''
#每个月有多少天列出来,以一个月的13号为基准,每个月的天数对7求余,然后13号的星期数加上余数即可
'''3.父亲准备为小龙的四年大学生活一次性储蓄一笔钱,使用整存零取的方式,控制小龙每月
月初取1000元准备这个月使用。假设银行整存零取的年利息1.71%,
请算出父亲至少需要存入多少钱才行。'''
a = 1000
for i in xrange(47,0,-1):
a /= (0.0171 / 12) + 1
a += 1000
a = round(a,2) # 两位小数
print a
#4.在编程竞赛中,有10个评委为参赛的选手打分,分数为0~100分。选手最后得分为:
# 去掉一个最高分和一个最低分后其余8个分数的平均值。#请编写一个程序实现。
def average(*args):
nums = list(args)
nums.sort()
del nums[0];del nums[-1]
return 1.0*sum(nums)/len(nums)
average(2,3,4,5,6)
'''有一个卡车司机肇事后想逃跑,但是被三个人看见了其车牌号,但是都没看全,甲说:车牌的前
两位是一样的;乙说:车牌的后两位一样的,但与前两位不一样;丙说:车牌是一个数字的平方。
请编写一个程序计算该车牌号是多少(车牌号4位数)。'''
import math
def FindHim():
for x in xrange(10):
for y in xrange(10):
if x != y:
result = x * 1100 + y * 11
test = math.sqrt(result)
if test.is_integer():
return result
print FindHim()
'''10个小孩围城一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个
小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,
第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;
糖块数为奇数的人可向老师要一块。
问经过这样几次后大家手中的糖的块数一样多? 每人各有多少块糖?'''
candy = [10,2,8,22,16,4,10,6,14,20]
add = [0,0,0,0,0,0,0,0,0,0]
avg = 1.0*sum(candy)/10
count = 0
while candy.count(avg) != 10:
for i in xrange(10):
add[i] = candy[i-1]/2 + 0.5*candy[i]
if add[i]%2 != 0: add[i] = add[i] + 1
candy = add[:]
add = [0,0,0,0,0,0,0,0,0,0]
avg = 1.0*sum(candy)/10
count += 1
print count
'''甲、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有7筐装满了鱼,
还有7筐只装了半筐鱼,另外7筐则是空的。由于他们没有秤,只好通过目测认为7个满筐鱼的重量
是相等的,7个半筐鱼的重量也是相等的。在不将鱼倒出来的前提下,怎么将鱼和筐平分三份?'''
#解题思路:
# 1.我们可以计算得知,每人应得3.5框鱼
# 2.穷举每人拿到整框数,a, b, c
# 3.计算每人应拿半框数,ah, bh, ch,
# 4.ah + bh + ch == 7 ?
for i in xrange(4):
for j in xrange(4):
if i+j<=7:
k = 7-i-j
a1 = (3.5-i)/0.5
a2 = (3.5-j)/0.5
a3 = (3.5 - k)/0.5
if (a1+a2+a3==7) and a1>0 and a2>0 and a3>0:
mat = []
mat.append([i,j,k])
mat.append([a1,a2,a3])
print [i,j,k],[a1,a2,a3]