目录

AtCoder B 206

AtCoder

Leon | 23 Jun 2021

题目描述

题目给一个数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));
    }
}


评论区