报告错误
如果你发现该网页中存在错误/显示异常,可以从以下两种方式向我们报告错误,我们会尽快修复:
- 使用 CS Club 网站错误 为主题,附上错误截图或描述及网址后发送邮件到 286988023@qq.com
- 在我们的网站代码仓库中创建一个 issue 并在 issue 中描述问题 点击链接前往Github仓库
题目描述
题目给一个数A,然后比如说第N天的时候则是N-1天时的总钱数加上N则是第N天的总钱数,求第一次总钱数超过A的天数
例子
如A = 12
N = 1 总钱数=1
N=2 总钱数=1+2=3
N=3 总钱数=3+3 =6
N=4 总钱数=4+6 = 10
N=5 总钱数=10+5=15>12
所以输出5
思路
因为这一个天数的本质的上是一个等差数列,即为1,2,3,4,5,6,7,8,9……所以等差数列求和公式为
\[n\times (n+1)/2\]所以说可以列出不等式
\[n\times (n+1)/2\geq A\]求最小n则为取等的时候将解想上取等
可以得出以下式子
\[n=-\frac{1}{2}+\sqrt{\frac{1}{4}+2\times A}\]复杂度O(1)
代码实现
import java.util.*;
import java.io.*;
public class yen{
public static void main (String [] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
double a = -0.5+Math.sqrt(0.25+2*n);
if(a==(int)a) System.out.println((int)a);
else System.out.println((int)(a+1));
}
}