幼稚园终于又有新的作业了。 老师安排同学用发给同学的4根木棒拼接成一个三角形。 当然按照正常的逻辑,如果不能拼
接成三角形。 必然要折断某个木棍来拼接三角形。 可是懒惰的小艺当然不会费力了! 如果拼接不成三角形,小艺就会把
它拼接成类似边长 1 1 2的伪三角形(两边之和等于第3边)。 如果伪三角形都拼接不成那就不交作业!
这个题目其实还是有点误导性的,老顾第一次碰到这个题目,是在 csdn 每日一练中碰到的,当时就算的蒙蒙的,最后是看了别人的题解才明白是啥逻辑。
四个木棒,任意三根能组成三角形就算ok,不需要两个最短的当做一根来处理这样的方式,于是解答就很简单了
class Solution:
def __init__(self) -> None:
pass
def solution(self, arr):
arr.sort()
if arr[0] + arr[1] > arr[2] or arr[1] + arr[2] > arr[3]:
return 1
elif arr[0] + arr[1] == arr[2] or arr[1] + arr[2] == arr[3]:
return 0
else:
return -1
if __name__ == "__main__":
arr = [int(item) for item in input().strip().split()]
sol = Solution()
result = sol.solution(arr)
print(result)
小张找到了一个整数 N,他想问问你从 1 到 N 的所有不同整数的异或和是多少, 请你回答他的问题。
此题由CSDN用户a23333a提供。
额。。。。这个题是来送分的,从1一直异或和到N即可,异或运算符是 ^,知道运算符就很简单了。
class Solution:
def __init__(self) -> None:
pass
def solution(self, N):
result = 0
for i in range(1,N + 1):
result ^= i
return result
if __name__ == "__main__":
N = int(input().strip())
sol = Solution()
result = sol.solution(N)
print(result)
以字符串的形式给你一个长度为 M 的整数 N,请你计算出对这个数进行一次操作后模 9 的值为 1 的所有可能的不同操作
方式。
在一次操作中, 我们可以选择 N 的一个数位 N[i],并把它替换成另一个不同的 0 到 9 范围之内的数 B,当且仅当它们选
择的 i 或 B 不同时两种操作方式不同。
此题由CSDN用户a23333a提供
我恨这个叫 a23333a 的家伙,这个题目猛一接触我就犯懵了,这是啥?替换操作还能有多个结果?岁数大了,脑子就没那么灵光了,于是就拿起纸和笔一通乱画,总算明白题主的意思了。比如 10 余1,那么就可以把0换成9,或者91余1,可以把9换成0这样子,并且本身余1的也算。那么计算逻辑也就出来了,根据当前数字得到的余,来计算每个位上的数字有几种替换可能就好。其实做到最后老顾有点晕菜了,具体怎么算的也不确定了,可以看到老顾提交的代码中,余1的情况重复了,在for循环中,余1余0的部分都是无效代码。
另外,就是这个题目输入的内容是什么鬼?M居然是个1元素数组?你长度放数组里做毛线?还有就是N,居然是个大整数?bug区都有小伙伴提意见了啊亲。白瞎了我还专门写了两行代码想转下类型呢。如果是字符串,在没有python这么强大的整型支持的时候,计算一个数取9的余数,可以把各位的数字相加得到的和继续相加,直到变成1位数,就可以了,因为9的倍数有个很特别的点,就是所有位数的和相加就是9的倍数。
class Solution:
def __init__(self) -> None:
pass
def solution(self, M, N):
n = N
N = str(N)
mod = n % 9
ans = 0
if mod == 1:
return (N.count('0') + N.count('9')) * 2
for i in range(M[0]):
if mod == 1:
if N[i] in '09':
ans += 1
elif mod == 0:
ans += 1
else:
if int(N[i]) == mod - 1:
ans += 2
else:
ans += 1
result = ans
return result
if __name__ == "__main__":
M = [int(item) for item in input().strip().split()]
N = int(input().strip())
sol = Solution()
result = sol.solution(M, N)
print(result)
有一个神奇的键盘,你可以用它输入a到z的字符,然而每当你输入一个元音字母(a,e,i,o,u其中之一)的时候,已输入的字
符串会发生一次反转! 比方说,当前输入了tw,此时再输入一个o,此时屏幕上的字符串two会反转成owt。 现给出一个
字符串,若用该键盘输入,有多少种方法可以得到?
这个题貌似也在哪里见过,但老顾自己没去做过这个题目,印象中应该是在谁家的题解里瞄过一眼。具体逻辑也记不清了。还是靠着纸上比划出来的。
具体就是在只有1个元音字母前,所有的可能都被锁死了,只需要计算最后只剩1个元音字母时的字符串长度即可(在这个元音字母翻转时)
在这一题,老顾浪费了很长时间,主要是 str=str[1:][::-1] 这里,当时忘记写成 -1,写成1了,最后怎么计算得到的结果都不对。。。郁闷了
class Solution:
def __init__(self) -> None:
pass
def solution(self, str):
s = str
result = 0
while len(str) > 0 and str[0] in 'aeiou':
str = str[1:][::-1] # 这里翻转字符串应该填写 -1,老顾写成1,浪费了大把时间
if len(str) == 0:
result += 1
break
result = 0
while len(str) > 0 and str[0] not in 'aeiou':
result += 1
str = str[1:]
if len(str) == 0:
result += 1
return result
if __name__ == "__main__":
str = input().strip()
sol = Solution()
result = sol.solution(str)
print(result)
在考试期间,他会检测是否有跳出页面,是否有粘贴代码,这算是正常的,但是,我没跳出页面,自己复制自己的代码,一粘贴(Ctrl+V)就算一次粘贴,鼠标右键粘贴没试过,估计也会记录。但是,有另外一种情况,当程序抛出异常后,选择抛出异常的文本,拖动到代码里,这个不算粘贴?
这次的题目不难,脑子灵活点的小朋友提交的都很快,耐心点的小伙伴们也能拿到很好的成绩
这次看了下得分榜,真不知道那些得分连25分都没有的小伙伴们进来是干什么的?凑数的?时间不值钱吗?
本来以为这次因为耽误的时间较多,提交后都50多分钟了,还以为会落榜,结果这次参加考试的大佬好像也不多,除了常见的两位大佬@CodeRecycle,@请叫我问哥,其他都不太常见,居然让老顾又摸到了前十的尾巴。