python如何解任意如何解齐次线性方程组组?

下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
python解非线性方程组(3个),为什么只有一组解?应该有2组解啊,def f(x):x,y,z =x.tolist()return [math.sqrt((x-15.34)**2+(y-51.59)**2+(z-57.55)**2)-4.59,math.sqrt((x-18.92)**2+(y-49.03)**2+(z-53.91)**2)-6.33,math.sqrt((x-16.46)**2+(y-55.25)**2+(z-58.49)**2)-5.32]result1=fsolve(f,[1,1,1])print result1
小琦430yRi
这是我按照你的方法得到的结果&&&&import&math&&&&def&f(list):...&&&&&x,y,z=list//注意这里是list的解包&不过如果你不传入list而是别的&比如字符串&就需要用到&tolist了...&&&&&return[math.sqrt((x-15.34)**2+(y-51.59)**2+(z-57.55)**2)-4.59,&&&&&&&&&&&&&&&math.sqrt((x-18.92)**2+(y-49.03)**2+(z-53.91)**2)-6.33,&&&&&&&&&&&&&&&math.sqrt((x-16.46)**2+(y-55.25)**2+(z-58.49)**2)-5.32]...&&&&f([9,8,7])[62.696,&56.275,&64.43]&&&&f([1,1,1])[72.31,&67.97,&75.08]&&&&是三个结果没错啊我猜你的 fsolve的方法内容是这样的吧def &fsolve(method,list):&&&&&&&&return method(list)或者你在fsolve里面对 f(list)返回的结果又做了一些操作,发一下你的 fsolve方法吧 要不然找不到问题所在 &目前来看 你的f方法是正确的
你验证一下你算出来的三个值,带入方程x,y,z中,是不对的。fsolve我是直接调用的scipy和numpy包,没有修改。
为您推荐:
其他类似问题
扫描下载二维码2081人阅读
Numpy是一个非常强大的python科学计算库,为了机器学习的需要,想深入研究一下Numpy库的用法,用这个系列的博客,记录下我的学习过程。
正在持续更新
计算逆矩阵
numpy.linalg模块包含线性代数的函数,可以用来求矩阵的逆,求解线性方程组、求特征值及求解行列式。
mat函数可以用来构造一个矩阵,传进去一个专用字符串,矩阵的行与行之间用分号隔开,行内的元素用空格隔开。
import numpy as np
A = np.mat("0 1 2;1 0 3;4 -3 8")
print "A\n", A
现在我们使用inv函数计算逆矩阵
inverse = np.linalg.inv(A)
print "inverse of A\n", inverse
我们检查一下两矩阵相乘的结果
print "Check\n", A * inverse
需要说明的是这里的 A * inverse是两个矩阵中对应元素逐个相乘,这就要求了两矩阵的行和列相等。
求解线性方程组
创建矩阵A和数组b:
A = np.mat("1 -2 1;0 2 -8;-4 5 9")
print "A\n", A
b = np.array([0, 8, -9])
print "b\n", b
这里可以直接调用linalg中的solve函数求解
x = np.linalg.solve(A, b)
print "Solution", x
使用dot函数检查解的正确性:
print "Check\n", np.dot(A , x)
这里的dot函数是两个矩阵相乘,而非矩阵内元素逐个相乘
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90930次
积分:1640
积分:1640
排名:千里之外
原创:68篇
评论:23条
文章:13篇
阅读:26927
文章:13篇
阅读:14120
文章:13篇
阅读:22470
文章:12篇
阅读:10923
(5)(3)(2)(9)(6)(1)(3)(6)(1)(20)(13)(1)题目id: 1 just print a+b
give you two var a and b, print the value of a+b, just do it!!
题目id: &2 list排序
给你一个list L, 如 L=[2,8,3,50], 对L进行升序排序并输出
print sorted(L)
题目id: 3 &字符串逆序
给你一个字符串 a, 如a=&12345&,对a进行逆序输出a。
print a[::-1]
题目id:4 & 输出字典key
给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以','链接,如&1,2,3'。
print ','.join(a.keys())
题目id: &5 &输出字符奇数位置的字符串
给你一个字符串 a, 输出字符奇数位置的字符串。如a=&12345&,则输出135。
for i in range(len(a)):
if i%2==0:
str1 += str(a[i])
print str1
题目id:6 &求解100以内的所有素数
输出100以内的所有素数,素数之间以一个空格区分
import math
def isPrime(n):
return False
for i in range(2,int(math.sqrt(n))+1):
if n%i == 0:
return False
return True
for i in range(1,100):
if isPrime(i):
list.append(str(i))
print ' '.join(list)
&题目id:7 &求矩形面积
已知矩形长a,宽b,输出其面积和周长,面积和周长以一个空格隔开
print "%d %d"%(a*b,2*(a+b))
&题目id:8 &求中位数
给你一个list L, 如 L=[0,1,2,3,4], 输出L的中位数(若结果为小数,则保留一位小数)。
n = len(L)
//注意sorted()函数和sort()函数的区别,sorted()不影响L的结构,而sort()影响L的结构
print (L[n/2] if n&1 else round(float(L[n/2-1]+L[n/2])/2,1))
题目id:9 &最大公约数
给你两个正整数a和b, 输出它们的最大公约数。
def gcd(a,b):
print gcd(a,b)
题目id:10 &最小公倍数
给你两个正整数a和b, 输出它们的最小公倍数
def gcd(a,b):
print a*b/gcd(a,b)
题目id:11 &结尾0的个数
给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内所有数字的乘积末尾0的个数,
def getFactorNum(num,factor):
while num%factor == 0:
num /=factor
return cnt
fiveNum = 0
twoNum = 0
for num in L:
fiveNum += getFactorNum(num,5)
twoNum += getFactorNum(num,2)
print min(fiveNum,twoNum)
题目id:12 &结尾非零数的奇偶性
给你一个正整数列表 L, 如 L=[2,8,3,50], 判断列表内所有数字乘积的最后一个非零数字的奇偶性,
def getFactorNum(num,factor):
while num%factor == 0:
num /=factor
return cnt
fiveNum = 0
twoNum = 0
for num in L:
fiveNum += getFactorNum(num,5)
twoNum += getFactorNum(num,2)
print ( 1 if fiveNum &= twoNum else 0)
题目id:13 &光棍的悲伤
给你一个整数a,数出a在二进制表示下1的个数,并输出。
cnt += a&1
题目id:14 &Python之美
输出Python之禅注意:输出python之禅的源码即可,不用转换为英文。
import this
print this.s
题目id:15 &大小写转换
给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出。
print a.lower()
题目id:16&人民币金额打印
银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。在中文大写方式中,0到10以及100、被依次表示为:
零壹贰叁肆伍陆柒捌玖拾佰仟万以下的例子示范了阿拉伯数字到人民币大写的转换规则:
1 壹圆11 壹拾壹圆111 壹佰壹拾壹圆101 壹佰零壹圆-1000 负壹仟圆1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆
现在给你一个整数a(|a|&), 打印出人民币大写表示
d={0:'零',1:'壹',2:'贰',3:'叁',4:'肆',5:'伍',6:'陆',7:'柒',8:'捌',9:'玖'}
unit = {0:'',1:'拾',2:'佰',3:'仟',4:'万'}
b = abs(a)
def transferMoney(b,s,outOfRange):
s.append('万') if outOfRange else s.append('圆')
flag = False
if b == 0:
s.append(d[0])
flag = True
s.append(unit[cnt])
s.append(d[b%10])
transferMoney(b%10000,s,False)
if b &= 10000:
transferMoney(b/10000,s,True)
s.append('负')
print "".join(s[::-1])
题目id:17&公约数的个数
&给你两个正整数a,b, &输出它们公约数的个数。
def gcd(a,b):
a,b = b,a%b
for i in range(1,gcd(a,b)):
if a%i == 0 and b%i ==0:
题目id:18 & &逆解最大公约数与最小公倍数
我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。
import sys
def gcd(a,b):
a,b = b,a%b
minv,mina,minb= sys.maxint,0,0
for i in range(1,c):
for j in range(i,c):
if gcd(i,j) == 1 and a*i*j == b:
if minv & (a*i+a*j):
minv,mina,minb = (a*i+a*j),a*i,a*j
print '%d %d'%(mina,minb)
题目id:19 &单身情歌
抓不住爱情的我 总是眼睁睁看它溜走 ...
现在来练习一下发现爱的能力,给你一个字符串a,如果其中包含"LOVE"(love不区分大小写)则输出LOVE,否则输出SINGLE。
print ("LOVE" if "love" in a.lower() else "SINGLE" )
题目id:20&信息加密
给你个小写英文字符串a和一个非负数b(0&=b&26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连,如果超过了z就回到了a。例如a="cagy",b=3, 则输出 fdjb
for letter in a:
if letter.islower():
c.append(chr((ord(letter)+b-97)%26+97))
c.append(letter)
print "".join(c)
题目id:21  回文子串
给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在,则输出YES,否则输出NO。回文串的定义:记串str逆序之后的字符串是str1,若str=str1,则称str是回文串,如"abcba".
def is_palindrome(a):
return (True if a == a[::-1] else False)
for index in range(len(a)-n+1):
if is_palindrome(a[index:index+n]):
print 'YES'
print 'NO'
题目id:22  时间就是金钱
给你两个时间st和et(00:00:00&=st &= et&=23:59:59), 请你给出这两个时间间隔的秒数。如:st="00:00:00", et="00:00:10", 则输出10.
stTime = st.split(':')
etTime = et.split(':')
hour,minute,second = int(etTime[0])-int(stTime[0]),int(etTime[1])-int(stTime[1]),int(etTime[2])-int(stTime[2])
print hour*3600+minute*60+second
题目id:23  365 Or 366?
一年有多少天,这是个大问题,很值得思考。现在给你一个年份year(year为四位数字的字符串,如"2008","0012"),你输出这一年的天数。如year="2013", 则输出365。
def isLeapYear(year):
return (year%4 == 0 and year%100 )or year%400 == 0
print (366 if isLeapYear(int(year)) else 365)
题目id:24  一马当先
下过象棋的人都知道,马只能走'日'字形(包括旋转90&的日),现在想象一下,给你一个n行m列网格棋盘,棋盘的左下角有一匹马,请你计算至少需要几步可以将它移动到棋盘的右上角,若无法走到,则输出-1.如n=1,m=2,则至少需要1步;若n=1,m=3,则输出-1
主要用深度优先搜索算法去做
visit = [([False]*n) for i in range(m)]
= ((2,1),(1,2),(-1,2),(-2,1),(-2,-1),(-1,-2),(1,-2),(2,-1))
minCnt = n*m
def dfs(row,col):
global minCnt
global cnt
global flag
global step
global visit
if row == m-1 and col == n-1:
flag = True
if minCnt & cnt:
minCnt = cnt
for item in step:
newRow,newCol= row+item[0],col+item[1]
if newRow&=0 and newRow&m and newCol&=0 and newCol & n:
if visit[newRow][newCol] == False:
visit[newRow][newCol] =True
dfs(newRow,newCol)
visit[newRow][newCol] =False
visit[0][0] =True
print (minCnt if flag else -1)
题目id:25  格式化时间
给你一个时间t(t是一个字典,共有六个字符串key(year,month,day,hour,minute,second),值为每个值为数字组成的字符串,如t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}请将其按照以下格式输出, 格式:XXXX-XX-XX XX:XX:XX。如上例应该输出:
16:45:02。
d =[t['year'].zfill(4),t['month'].zfill(2),t['day'].zfill(2),t['hour'].zfill(2),t['minute'].zfill(2),t['second'].zfill(2)]
print '-'.join(d[:3]),':'.join(d[3:])
题目id:26  序列判断
给你一个整数组成的列表L,按照下列条件输出:若L是升序排列的,则输出"UP";若L是降序排列的,则输出"DOWN";若L无序,则输出"WRONG"。
if L == sorted(L):
print 'UP'
elif L == sorted(L,reverse=True):
print 'DOWN'
print 'WRONG'
题目id:27  加油站
每个加油站加油都有一个上限,保存在列表limit中,即limit[i]为第i个加油站加油的上限,而从第i个加油站开车开到第(i+1)%n个加油站需要cost[i]升油,cost为一个列表。现在有一辆开始时没有油的车,要从一个加油站出发绕这个公路跑一圈回到起点。给你整数n,列表limit和列表cost,你来判断能否完成任务。如果能够完成任务,输出起始的加油站编号,如果有多个,输出编号最小的。如果不能完成任务,输出-1。
for i in range(n):
sumLimit,sumCost = 0,0
for k in range(n):
sumLimit +=limit[(k+i)%n]
sumCost += cost[(k+i)%n]
if sumCost & sumLimit:
题目id:28  相同数字
给你一个整数列表L,判断L中是否存在相同的数字,若存在,输出YES,否则输出NO。
print ('NO' if len(set(L)) == len(L) else 'YES')
题目id:29  判断三角形
给你三个整数a,b,c, 判断能否以它们为三个边长构成三角形。若能,输出YES,否则输出NO。
if d[0]+d[1]&d[2] and abs(d[0]-d[1])&d[2]:
print 'YES'
print 'NO'
题目id:30  National Day
马上国庆节了,用一个英文单词描述你此时此刻的心情。
print 'Happy'
题目id:31  山峰的个数
十一假期,小P出去爬山,爬山的过程中每隔10米他都会记录当前点的海拔高度(以一个浮点数表示),这些值序列保存在一个由浮点数组成的列表h中。回到家中,小P想研究一下自己经过了几个山峰,请你帮他计算一下,输出结果。例如:h=[0.9,1.2,1.22,1.1,1.6,0.99], 将这些高度顺序连线,会发现有两个山峰,故输出一个2(序列两端不算山峰)
for i in xrange(1,len(h)-1):
if h[i]&h[i-1] and h[i]&h[i+1]:
题目id:32  三角形形状
给以一个三角形的三边长a,b和c(边长是浮点数),请你判断三角形的形状。若是锐角三角形,输出R,若是直角三角形,输出Z,若是钝角三角形,输出D,若三边长不能构成三角形,输出W.
if d[0]+d[1] & d[2] and abs(d[0]-d[1]) & d[2]:
if d[0]**2+d[1]**2 == d[2]**2:
elif d[0]**2+d[1]**2 &d[2]**2:
题目id:33  大幂次运算
给你两个正整数a(0 & a & 100000)和n(0 &= n &=),计算(a^n) % 并输出结果
print pow(a,n,)
题目id:34  密码生成
生活在当代社会,我们要记住很多密码,银行卡,qq,人人,微博,邮箱等等。小P经过一番思索之后,发明了下面这种生成密码方法:给定两个正整数a和b, 利用a / b我们会到的一个长度无限的小数(若a / b不是无限小数,比如1/2=0.5,我们认为0.5是0.5000000...,同样将其看做无限长的小数),小P将该小数点后第x位到第y位的数字当做密码,这样,无论密码有多长,小P只要记住a,b,x,y四个数字就可以了,牢记密码再也不是那么困难的事情了。现在告诉你a,b,x,y(0 & a,b &=
& x &= y & ),请你输出密码。例如:a = 1, b = 2, x = 1, y = 4, 则 a / b = 0.5000000..., 输出小数点后第1到4位数字,即5000
decimals = []
if a & b :
flag = False
while cnt &= y:
decimalPart,a = divmod(a*10**1024,b)
decimals.append(str(decimalPart).zfill(1024))
if x &= cnt and x & cnt+1024:
flag = True
decimals.append((str(decimalPart).zfill(1024))[x-cnt:])
if y&=cnt and y& cnt+1024:
cnt +=1024
if y/1024 !=x/1024:
decimals[-1]=(str(decimals[-1]))[:y-cnt+1]
decimals[-1]=(str(decimals[-1]))[:y-x+1]
print ''.join(decimals)
题目id:35  最大连续子序列
给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个连续子序列,使其和最大,输出最大子序列的和。例如,对于L=[2,-3,3,50], 输出53(分析:很明显,该列表最大连续子序列为[3,50]).
def maxSubSum(L):
maxSum,thisSum= 0,0
for item in L:
thisSum +=
if thisSum & maxSum:
maxSum = thisSum
elif thisSum & 0:
thisSum = 0
return maxSum
print maxSubSum(L)
题目id:36  最大非连续子序列
给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个非连续子序列,使其和最大,输出最大子序列的和。这里非连续子序列的定义是,子序列中任意相邻的两个数在原序列里都不相邻。例如,对于L=[2,-3,3,50], 输出52(分析:很明显,该列表最大非连续子序列为[2,50]).
注意类似这种情况L=[-1,-1,-1,-1,-1,0]
if len(L) &= 2:
dp=[L[0],max(L[0],L[1])]
for i in range(2,len(L)):
dp.append(max(dp[i-1],max(L[i]+dp[i-2],L[i])))
print dp[len(L)-1]
print L[0]
题目id:37  简单题之勾股定理
&给你直角三角形的两个直角边的边长a,b,请你求出其斜边边长,结果保留小数点后三位小数。
如a=3, b =4, 则输出5.000。
import math
print "%.3f"%math.sqrt(a**2+b**2)
题目id:38  简单题之列表转换
给你一个字符串列表L,请用一行代码将列表所有元素拼接成一个字符串并输出。如L=['abc','d','efg'], 则输出abcdefg。
print ''.join(L)
题目id:39  简单题之输出格式练习
&给你一个字符串列表L,用一行代码顺序输出L中的元素,元素之间以一个空格隔开,注意行尾不要有空格,输出单独占一行。
如L=['abc','d','efg'], 则输出abc d efg。
print ' '.join(L)
&题目id:40  整数解
&给你两个整数a和b(-10000&a,b&10000),请你判断是否存在两个整数,他们的和为a,乘积为b。
若存在,输出Yes,否则输出No例如:a=9,b=15, 此时不存在两个整数满足上述条件,所以应该输出No。
import math
x1 = int(float(a+math.sqrt(a**2-4*b))/2)
x2 = int(float(a-math.sqrt(a**2-4*b))/2)
if x1+x2 == a and x1*x2 == b:
print 'Yes'
print 'No'
题目id:41  Py数
&Py从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,
这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Py非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Py数。现在给你一个十进制4位数n,你来判断n是不是Py数,若是,则输出Yes,否则输出No。如n=2992,则输出Yes; n = 9999,则输出No。
def getSumByValue(n,value):
res += n%value
return res
if getSumByValue(n,10) == getSumByValue(n,16) == getSumByValue(n,12):
print 'Yes'
print 'No'
题目id:42  分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?现在来考虑考虑这个问题,给你一个不超过10000的正的偶数n,计算将该数拆成两个不同的素数之和的方法数,并输出。如n=10,可以拆成3+7,只有这一种方法,因此输出1.
import math
def is_prime(num):
for i in range(2,int(math.sqrt(num)+1)):
if num%i == 0:
return False
return True
for i in range(2,n/2):
#注意1不是素数
if is_prime(i) and is_prime(n-i):
题目id:43  斐波那契数列
斐波那契数列为1,1,2,3,5,8...。数列从第三项起满足,该项的数是其前面两个数之和。现在给你一个正整数n(n & 10000), 请你求出第n个斐波那契数取模的值(斐波那契数列的编号从1开始)。
for i in range(3,n+1):
a,b=b%,(a+b)%
题目id:44  超级楼梯
有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0&n&40),请你输出不同的走法数。如n=2,则输出1(你只有一种走法,走一步,从第一级到第二级)
for i in range(3,n+1):
a,b=b,(a+b)
题目id:45  砝码问题
有一组砝码,重量互不相等,分别为m1、m2、m3&&mn;它们可取的最大数量分别为x1、x2、x3&&xn。 现要用这些砝码去称物体的重量,问能称出多少种不同的重量。 现在给你两个正整数列表w和n, 列表w中的第i个元素w[i]表示第i个砝码的重量,列表n的第i个元素n[i]表示砝码i的最大数量。i从0开始,请你输出不同重量的种数。如:w=[1,2], n=[2,1], 则输出5(分析:共有五种重量:0,1,2,3,4)
母函数的问题
for i in range(n[0]+1):
m.add(w[0]*i)
for i in range(1,len(n)):
tmp = m.copy()
for j in range(n[i]+1):
for k in tmp:
m.add(w[i]*j+k)
print len(m)
题目id:45  测试贡献题目
给你一个list L, 如 L=[2,8,3,50], 对L进行降序排序并输出, 如样例L的结果为[50,8,3,2]
print sorted(L,reverse = True)
题目id:46  取石子游戏
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,
一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。
现在给出初始的两堆石子的数目a和b,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
如果你是胜者,输出Win,否则输出Loose。
例如,a=3,b=1, 则输出Win(你先在a中取一个,此时a=2,b=1,此时无论对方怎么取,你都能将所有石子都拿走).博弈论问题
import math
p = (math.sqrt(float(5))+1)/float(2)
c = abs(a-b)
if a == int(p*c):
print "Loose"
else: print "Win"
题目id:47  杨辉三角
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1 5 10 10 5 1
..............
先在给你一个正整数n,请你输出杨辉三角的前n层
注意:层数从1开始计数,每层数字之间用一个空格隔开,行尾不要有空格。
如n=2,则输出:
trangle = [['1'],['1','1']]
def print_trangle(n):
for i in range(n):
print ' '.join(trangle[i])
for i in range(3,n+1):
newRow= trangle[i-2]
for j in range(len(newRow)-1):
tmp.append(str(int(newRow[j])+int(newRow[j+1])))
tmp.append('1')
trangle.append(tmp)
print_trangle(n)
题目id:48  砝码问题II
有一组砝码,重量互不相等,分别为m1、m2、m3&&mn;每种砝码的数量有无限个。
现要用这些砝码去称物体的重量,给你一个重量n,请你判断有给定的砝码能否称出重量n。
现在给你一个正整数列表w和一个正整数n,列表w中的第i个元素w[i]表示第i种砝码的重量,
n表示要你判断的重量。如果给定砝码能称出重量n,输出Yes,否则输出No。
例如,w=[2,5,11], n=9,则输出Yes(取两个2,一个5)。
  此类问题用母函数做比较简单
def solve():
for i in range(len(w)):
num.append(n/w[i])
for i in range(num[0]+1):
m.add(w[0]*i)
for i in range(1,len(num)):
tmp = m.copy()
for j in range(num[i]+1):
for k in tmp:
if w[i]*j+k & n:
m.add(w[i]*j+k)
elif w[i]*j+k == n:
return "Yes"
return "No"
print solve()
题目id:49  进制转换
给你一个十进制数a,将它转换成b进制数,如果b&10,用大写字母表示(10用A表示,等等)
a为32位整数,2 &= b &= 16
如a=3,b = 2, 则输出11不要忘记a为负数的情况
base = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')
def transfer(a,b):
aa = abs(a)
res.append(base[aa%b])
res.append('-')
return ''.join(res[::-1])
print transfer(a,b)
&题目id:50  Py扔铅球
Py不但是编程大牛,而且是运动健将。比如说扔铅球,1000m,现在Py参加校园扔铅球比赛,
给你Py的身高a(双精度数),球落地点与Py头部的连线与水平线的夹角 b(弧度),
要你编写一个程序计算Py扔铅球的水平距离。
a,b都是浮点数,注意b是弧度,其中, 140 & a & 200,
0 & b & 1.5.
输出你求出的水平距离,保留到小数点后三位。
如,a = 165.5, b=1.1, 则输出84.234
import math
print "%.3f" % (a/math.tan(b))
&题目id:53  神の安♂排
记得有一次全班去唱K, 其中有个活动是情歌对唱. 具体操作流程是这样的:
准备好 21 个阄(我们班 15 男 6 女), 其中只有两个是有标记的, 每人随意抓取一个, 最后取到有标记的阄的两个人去点首情歌对唱.
旁边一哥们儿幽幽地对我说, 看来搅基真是神的安排啊, 你看我们班的男女人数, 搅基的几率 C(15,2)/C(21,2) 刚好是 1/2.
给跪了, 这哥们儿对数字太敏感了, 简直是拉马努金转世啊. 不过我随之想到一个问题: (21, 15) 真的是神的唯一安排吗? 其实不是的,
神还有很多类似的安排. 比如 (4, 3), 显然 C(4,2)/C(3,2) 也等于 1/2, 当然还有 (120, 85) 等等等等.
神的安排太多太多了, 如果我们定义 (n, m) 是一个安排(其中 1 & m & n), 而如果 C(m,2)/C(n,2) = 1/2, 它就是神的安排.
现在的问题是, 给你一个不大于 10^9 的正整数 N, 有多少组神的安排 (n, m) 满足 n &= N 呢?具体参考
while x&= 2*N-1:
x,y=3*x+4*y,2*x+3*y
if x & 2*N-1:
if x%2 and y%2:
题目id:57  那些年我们集过的卡片
不知道大家的童年有没有过和我相似的经历。我记得小时候经常买干脆面,不为别的,只是因为里面有一张人物卡片。
其实有很多这样的活动都有一个相同的模式:N 种人物卡片,每次买一包干脆面随机得到一张。当你集齐这 N 种人物时,就会有相应的奖励。
那时候还不懂怎么计算概率,白白给人家送了好多钱,吃了好多干脆面。
现在的任务是,给你一个正整数 N (1 &= N &= 10^4),请你帮我从期望的角度计算平均需要买多少包干脆面才能集齐这 N 种人物。
提醒:由于结果可能不是整数,所以结果只保留到小数点后两位。
for i in range(N,0,-1):
ans+=N*1.0/i
print "%.2f" % ans
阅读(...) 评论()

我要回帖

更多关于 python求解线性方程组 的文章

 

随机推荐