加入收藏
举报
02-12 17:18
#0
文件名称:
笔试-作业帮-180925.md
所在目录:
D-笔试面经
文件大小:
2.01 KB
下载地址:
DarLiner/Algorithm_Interview_Notes-Chinese
   
免责声明:本网站仅提供指向 GitHub 上的文件的链接,所有文件的版权归原作者所有,本网站不对文件内容的合法性、准确性或安全性承担任何责任。
文本预览:
笔试-作业帮-180925
===
- 单选 5,填空 5,编程 2,问答 2
- 编程不允许跳出页面
Index
---

- [1. 点对距离](#1-点对距离)
- [2. 扩展型表达式求值](#2-扩展型表达式求值)

## 1. 点对距离


**Python**(60%)
- 试了各种情况,不知道哪里有问题
```python
from math import ceil, floor
def foo(ax, ay, bx, by):
d = ((ax - bx)**2 + (ay - by)**2)**0.5
#return round(d, 5)
return d
k = int(input())
n = int(input())
P = []
for _ in range(n):
x, y = list(map(float, input().split()))
P.append([x, y])
D = []
for i in range(n):
for j in range(i+1, n):
d = foo(P[i][0], P[i][1], P[j][0], P[j][1])
D.append(d)

D.sort()
#print(D)
N = len(D) - 1
#print(N)
#print(ceil(N * (k / 100)))
ans = D[ceil(N * (k / 100))]
#print("%0.5f" % ans)
print(round(ans, 5))
#print(ans)
```
## 2. 扩展型表达式求值



**Python**(57.14%)
- 不能跳出页面,实在不想写这种题,偷鸡过了 57%
```python
def bar(s):
while "%" in s:
i = s.find("%")
j = i - 1
while s[j].isdigit():
j -= 1

s = s[:j+1] + str(int(s[j+1: i]) / 100) + s[i+1:]
return s

def foo(s):
if "**" in s or "++" in s or "--" in s:
return "error"

s = bar(s)

try:
ans = eval(s)
if isinstance(ans, int):
return "%d" % ans
else:
return "%0.3f" % ans
#return round(ans, 3)
except e:
return "error"
s = input()
ans = foo(s)
#print(bar(s))
print(ans)
```
点赞 回复
回帖
支持markdown部分语法 ?