Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
*Bạn làm code rối quá mình đọc chả được =)
*Theo mình thấy thì có lẽ n≤109 nên việc bạn duyệt từ 1→n sẽ dẫn đến lỗi TLE.
*Bài này bạn nên làm như sau:
- Duyệt i từ 1 -> √n.
- Nếu n chia hết cho i thì lưu lựa chọn i và n/i vào mảng.
- Chọn ra cặp lựa chọn có tổng bé nhất và xuất ra.
*Code:
#include <iostream>
#include <vector>
using namespace std;
struct Struct
{
int first;
int second;
int sum;
};
typedef struct Struct three;
vector<three> a;
int n;
three m;
int main()
{
cin >> n;
for (int i=1; i*i<=n; i++)
{
if (n%i==0)
{
three v;
v.first = i;
v.second = n/i;
v.sum = v.first+v.second;
a.push_back(v);
}
}
m = a[0];
for (three i:a)
{
if (i.sum<m.sum) m = i;
}
cout << m.first << " " << m.second;
}
∘Daoanhviet96
Hãy giúp mọi người biết câu trả lời này thế nào?
Xem thêm:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n, x, y, tongmin, minx, miny;
cin >> n;
tongmin = n;
for(x=1; x<n/2; x++){
if(n%x==0){
y=n/x;
if((x+y)<=tongmin){
tongmin=x+y;
minx=x; miny=y;
}
}
}
cout << minx << " " << miny;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
420
1886
320
có code dễ hiểu hon k anh