1、把任意一个数a开b次方
输入样例:
1000 2
输出样例:
31.622777
代码:
# 二分法
import sys
line = sys.stdin.readline().strip().split()
a = float(line[0])
b = int(line[1])
low = 0
high = a
res = (low+high)/2.0
while abs(res**b-a) > 10**(-8):
if res**b>a:
high = res
else:
low = res
res = (low+high)/2.0
print '%.6f'%res
# 感觉这题有两个bug:
# 题目描述是输出小数点后7位,但是输出样例是6位,输出6位时全A
# 测试while循环的边界条件时发现 > 10 ** (-4, -5, -6, -7)都能全A
2、有向图中的环
给定一个有向图,判定其中是否存在环
输入描述:
一个用邻接矩阵定义的有向图,可以直接用json.loads()读取,格式如下: {"a": ["b", "c", "d"], "b": ["a", "d"], "c": ["d"]} 其中字典中的key是节点名,value是这个节点所有孩子的节点名 从标准输入读取一个str,使用json.loads()转换为dict, 如果用其他编程语言,需要考虑怎么把string解析成json格式
输出描述:
如果图中有环,打印True到标准输出 否则,打印False到标准输出
输入样例:
{"a": ["b", "c"], "b":["e"], "c":["d"], "e": ["a"]}
输出样例:
True
我的其他测试样例:{"a": ["b", "c", "d"], "b": ["a", "d"], "c": ["d"]}; {"a": ["b", "c", "e"], "b":["e"], "c":["d"]}; {"a": ["b", "c"], "b":["e"], "c":["d"], "e": ["a"]}; {"a": ["b"], "b": ["c"], "c":["a"]}; {"a": ["b"], "b": ["c"]}
代码:
# 深度优先搜索
import json
import sys
from collections import defaultdict
def dfs(v, dic, visited):
if visited[ord(v)-ord('a')]:
res = True
else:
res = False
visited[ord(v)-ord('a')] = 1
if v in keys:
temp = dic[v]
for i in temp:
res = dfs(i, dic, visited)
return res
visited[ord(v)-ord('a')] = 0
return res
global keys
line = sys.stdin.readline().strip()
dic = json.loads(line)
keys = dic.keys()
visited = [0] * 26
res = dfs(keys[0], dic, visited)
print res
很惭愧笔试的时候没有写出来,通过暴力 print True A了50%
刚刚自己测了五组数据都通过了,但是不知道还有没有其他的问题,大佬们如果发现有bug一定要告诉我呀,小白感激不尽(默认输入为连通图)
3、分糖果
代码:
import sys
n = int(sys.stdin.readline().strip())
a = map(int, sys.stdin.readline().strip().split())
res = 0
if sum(a)%n != 0:
res = -1
else:
ave = sum(a)/n
for i in a:
temp = i - ave
if abs(temp)%2:
res = -1
break
elif temp>0:
res += temp/2
print res
总结:一个半小时,20道单选,3道编程,编程一共A了2.5题,第二题没有OJ测试过,所以如果大佬们发现了bug一定要告诉我呀 (from: 一个对自己没有信心的小白)