VL21 - Đi tìm ẩn số

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Tìm ~x~ nguyên dương lớn nhất, biết ~1 + 2 + 3 + ... + x \le N~

Giới hạn

  • ~5 \le N \le 10^9~
  • ~N \in N^*~

Input

Số nguyên dương ~N~

Output

Giá trị của ~x~ thỏa mãn yêu cầu bài toán

Sample

Input #1
6
Output #1
3

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    kietjumper  đã bình luận lúc 24, Tháng 4, 2024, 14:29

    Bài làm kiểu gì vậy mọi người?


  • 1
    kkdh  đã bình luận lúc 16, Tháng 4, 2024, 13:30

    include <bits/stdc++.h>

    using namespace std; long long n,x,s; int main() { cin>>n; x=0; s=0; while(s<=n) { x++; s+=x; } cout<<x-1;

    return 0;
    

    }


  • 1
    thambtk17  đã bình luận lúc 15, Tháng 2, 2024, 14:37

    include <bits/stdc++.h>

    using namespace std;

    int main() { long long x=0,n,i; cin>>n; for(i=1;i<=n/2;i++) { x+=i; if(x>n) { cout<<i-1; break; } if(x==n) { cout<<i; break; } } return 0; }


    • 0
      thambtk17  đã bình luận lúc 15, Tháng 2, 2024, 14:37

      c++ nha


  • -1
    phuctd4  đã bình luận lúc 14, Tháng 2, 2024, 11:38

    python 3

    import sys from math import sqrt

    def main(): n = int(input()) t = int(sqrt(2n)) s = t(t+1)//2 if s == n: print(t) else: while s < n: t += 1 s += t print(t-1) if name == "main": main()


  • -1
    thientaichepcode  đã bình luận lúc 28, Tháng 1, 2024, 4:47

    Khó quá


  • 0
    dinhvantung0611  đã bình luận lúc 7, Tháng 1, 2024, 11:16

    ll n; cin >> n; cout << (-1 + ll(sqrt(1 + 4 * (2 * n)))) / 2 << en;


    • 0
      dinhvantung0611  đã bình luận lúc 7, Tháng 1, 2024, 11:37 sửa 2

      Giải thích: Ta có công thức tính nhanh tổng (1 + 2 + 3 + ... + x) = ((x + 1) * x) / 2.

      Từ đó ta có hệ bất pt: ((x + 1) * x) / 2 <= N (N đã biết) Tương đương x^2 + x - 2N <= 0

      xét delta = 1 - 4 * (-2 * N) (b^2 - 4ac) ta có 2 nghiệm x1, x2 chỉ lấy nghiệm dương: x = -b + sqrt(delta) / 2a).

      Đó là kết quả của bài toán.


    • 0
      dinhvantung0611  đã bình luận lúc 7, Tháng 1, 2024, 11:18

      ll = long long


  • -1
    VoPhatDat  đã bình luận lúc 21, Tháng 12, 2023, 0:25

    N = int(input()) S = 0 i = 0 while(S <= N): i+=1 S = (i + (i*(i-1))//2) print(i - 1)


  • -2
    LiuChi_3007  đã bình luận lúc 20, Tháng 12, 2023, 12:56

    Mng tham khảo!

    include<bits/stdc++.h>

    using namespace std; int main(){ int n;cin >>n; int s=0; for(int i=1;i<n;i++){ s+=i; if(s>n){ cout << i - 1 ; break; } } }


  • -1
    TQThong2k11  đã bình luận lúc 14, Tháng 12, 2023, 14:47

    include <bits/stdc++.h>

    define str string

    typedef long long ll; typedef double dou;

    using namespace std; ll n; int main(){ cin >> n; cout << ll((-1 + sqrt(n * 8 + 1)) / 2); return 0; } Code C++ cho bạn nào tham khảo


  • -8
    baotphcm1612  đã bình luận lúc 10, Tháng 11, 2023, 19:44

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -3
    nhpnhpnhp  đã bình luận lúc 27, Tháng 10, 2023, 18:17

    bài này O(1) bằng cách giải toán nhé ^^


  • -22
    Minh_Bijan_123  đã bình luận lúc 15, Tháng 10, 2023, 11:44

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • 2
      neuoavs  đã bình luận lúc 17, Tháng 10, 2023, 12:58

      Tự tạo đi