ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

编程题:X星人的金币

2021-10-23 20:02:08  阅读:214  来源: 互联网

标签:right 星人 格子 编程 金币 sn left


X星人的金币

时问限制:3000MS
内存限制:589824KB
题目描述:
X是人在一艘海底沉船上发现了很多很多很多金币。可爱的X星人决定用这些金币来玩一个填格子的游戏。其规则如下:第1个格子放2枚金币,第2个格子放5枚金币,第3个格子放10枚金币,第4个格子放17枚金币,第5个格子放26枚金币,以此类准,现在X星人—共有N枚金币,按照上述规则,请问可以放满多少个格子?还剩多少枚金币?
输入描述:
单组输入。输入一个正整数N。表示金币的总数。(N<=10^9)
输出描述:
输出按照指定规则可以放满的格子数量以及剩余的金币数量,两者之间用一个英文空格隔开。

样例输入

20

样例输出

3 3

题解:

总结规律:
数列: 2 5 10 17 26 ... \(n^{2} +1\)
已知\(a_{n} =n^{2}\)的前n项和:\(S_{n}=\frac{n\left ( n+1 \right ) \left ( 2n+1 \right)}{6}\)
所以\(a_{n} =n^{2} +1\)的前n项和:\(S_{n}=\frac{n\left ( n+1 \right ) \left ( 2n+1 \right)}{6}+n\)

代码如下:

N = int(input())
i = 1
sn = lambda n : (n*(n+1)*(2*n+1)/6) + n
while sn(i) < N:
    i = i + 1
print(i-1, int(N-sn(i-1)))

标签:right,星人,格子,编程,金币,sn,left
来源: https://www.cnblogs.com/daiSir/p/15449236.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有