

Giúp mình làm bài này dưới dạng code C++ giúp mình full test nha lưu ý ko dùng bool , break,sum,for
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Ta có công thức tính tổng các số từ `1 -> n`với `n` nguyên dương
`(n(n+1))/2`
Như vậy thì ta sẽ kiểm tra xem là cái số `k` nhập vào có được tính bằng công thức `(n(n+1))/2` không
Vậy thì ta có:
`(n(n+1))/2 = k`
Khai triển:
`n*2 + n = 2k`
`<=> n^2 + n - 2k = 0`
Vậy thì bây giờ ta chỉ cần giải phương trình tìm `n` với `n` là số nguyên
`\Delta = b^2 - 4ac = 1^2 - 4.1.(-2k) = 1 + 8k`
Nghiệm:
`n_1 = (- b + sqrt(\Delta))/(2*a) = (-1 + sqrt(1+8k))/2`
`n_2 = (- b - sqrt(\Delta))/(2*a) = (-1 - sqrt(1+8k))/2 = - (1 + sqrt(1+8k))/2`
`-` Với `n_1` thì ta chỉ cần xét `sqrt(1 + 8k)` có là `1` số lẻ hay không, vì `-1 + sqrt(1 + 8K)` với `sqrt(1+8k)` là số lẻ thì khi `-1` nó chắc chắn là số chẵn.
`-` Với `n_2` thì ta không cần xét, vì `- (1 + sqrt(1+8k))/2` luôn âm
Code:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll n;cin>>n;
ll d = sqrt(1+8*n);
if(d*d == 1+8*n){
if((d-1)%2==0){
cout << 1;
return 0;
}
}
cout << 0;
}Hãy giúp mọi người biết câu trả lời này thế nào?
#include <bits/stdc++.h>
using namespace std;
int main() {
long long T;
cin >> T;
// Delta = 1 + 8T
long long delta = 1 + 8 * T;
long long sq = sqrt(delta);
// Kiểm tra delta có phải số chính phương không
if (sq * sq == delta) {
// Kiểm tra n có nguyên không
if ((sq - 1) % 2 == 0)
cout << 1;
else
cout << 0;
} else {
cout << 0;
}
return 0;
}
Thử xem nhé chứ mình cũng chưa chắc đâu
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin