时间关系只写了一点题目,手机码的A和N……手残党的失败,并且只用了Python

N、Yet Another Hanoi Problem

看不太懂英文题,但是看图片以及样例大概猜到是指定移动规则的哈诺塔。应该是只能移动到相邻位置,不能跨柱子移动。




找到公式以及通项公式

T = int(input())
for i in range(T):
    n = int(input())
    print(pow(3,n,1000000007)-1)

A、Arithmetic Problems

图片说明

减号代表乘法,除号代表加法,加号代表除法,乘号代表减法,如果除了0,特判出来。

计算表达式,符号作用被替换,表达式计算是解释性语言的一大强项,不用像C++写递归那么复杂,一个eval函数解决问题,值得注意的是,题目给出的替换运算符,不能直接替换,直接替换的话最后会存在先把乘换加,又把加换减了,这样就和题目意思不一样了,所以要用一个新的占位符去代替要换的位置,最后再把占位符换成对应运算符,保证不会重复替换。注意运算符最多5e5个需要修改eval的递归深度,不然就会暴毙,我一开始没太仔细看题目,火车返校路上码的,没太注意数据范围。

import sys
sys.setrecursionlimit(600000)
try:
    s = input()
    s = s.replace('-','mul')
    s = s.replace('/','add')
    s = s.replace('+','div')
    s = s.replace('*','sub')
    s = s.replace('mul','*')
    s = s.replace('add','+')
    s = s.replace('div','/')
    s = s.replace('sub','-')
    print('{:.2f}'.format(eval(s)))
except:
    print('Cannot be divided by 0')