这个题从后往前推导,我们假设前k天需要过的铁门为all;
将all分为两部分,第一部分为有规律的阶乘和,另一部分为多余部分天数,
第一部分:
假设末尾天需要过m道铁门
那么由天数我们可得出一元二次方程(1+m)m/2=k;
m也就是(pow(1+8k,0.5)-1)/2【注:pow为指数,在此过程将1+8k开方】
之所以为第一部分,是因为整数类型会自动将小数部分省略,那小数部分作为第二部分另算
由题,第一部分也就是1+22+33+44...+m*m
化简也就是(1+m)m/2+(2+m)(m-1)/2+...+m,
第二部分的天数也就是day=k-(1+m)m/2;【1+2+3+4+...+m】
因此由循环写出第一部分的铁门数
第二部分:
剩下的天数不满完整阶乘,因此直接加上去即可:day(m+1)【m+1是因为第一部分到作完整阶乘和】
代码如下: