题解 | #魔法序列#我和Mathematica,ChatGPT合力砍下牛客挑战赛75的A题
魔法序列
https://ac.nowcoder.com/acm/contest/84888/A
题目
“如果世上只剩下一个女孩子,应该给她取名叫伊娜。”
伊娜从画板一侧探出半张小脸,用她湛蓝的眼眸盯了我好一会儿,才又缩了回去,几不可闻地轻叹了一声。
“你又在说怪话了。”伊娜小姐如是说。
“我是真心这么觉得的。”我告诉她。“因为伊娜的可爱已经达到前无古人后无来者的地步了。”
定义一个魔法序列 为:
具体来说, 序列的第一项是 ,接下来每一项是上一项在该位置之前出现的次数。
给定一个正整数 ,你需要求出 。
代码
# generateSequence[n_] :=
# Module[{seq = {1}, i, count},
# For[i = 2, i <= n, i++, count = Count[seq, seq[[-1]]];
# AppendTo[seq, count]];
# seq]
# (*Generate the first 20 elements of the sequence*)
# generateSequence[20]
# FindSequenceFunction[%6, n]
# Sum[%7, {n, 1, m}]
# a_n= \frac{1}{4} (-1)^n \left((-1)^n n-n+3 (-1)^n+1\right)
# prefix_sum= \frac{1}{16} \left(2 (-1)^{2 m} m^2-2 (-1)^m m+2 (-1)^{2 m} m+12 m+(-1)^m-1\right)
# complete my python code
import math
def prefix_sum(m):
# Calculate each component of the formula
term1 = 2 * (-1)**(2 * m) * m**2
term2 = -2 * (-1)**m * m
term3 = 2 * (-1)**(2 * m) * m
term4 = 12 * m
term5 = (-1)**m
term6 = -1
# Sum all the terms
result = term1 + term2 + term3 + term4 + term5 + term6
# Divide by 16
result=result//16
return result
n = int(input())
ans = prefix_sum(n)
print(ans)