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
Bài làm kiểu gì vậy mọi người?
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;
}
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; }
c++ nha
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()
ll n; cin >> n; cout << (-1 + ll(sqrt(1 + 4 * (2 * n)))) / 2 << en;
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.
ll = long long
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; } } }
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
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
bài này O(1) bằng cách giải toán nhé ^^
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Tự tạo đi