luyencode / comments

Server lưu trữ bình luận trên Luyện Code
https://luyencode.net
6 stars 3 forks source link

https://oj.luyencode.net/problem/MT06 #237

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Tìm số chính phương trong ma trận - Luyện Code Online

https://luyencode.net/problem/MT06

ApokPhuoc commented 3 years ago

@samreachyan cái chỗ ans là n*m phần tử ạ

ApokPhuoc commented 3 years ago

@nhanphandz Thay vì phải vt hàm thì bn dùng sort() cx đc

ngocle7 commented 3 years ago

sao mình test trên live ide cho kết quả đúng và nộp bài wrong ans

ngocle7 commented 3 years ago

@Nvcuonghandsome mình nhập phần tử vào mảng 2 chiều, rồi check nếu là số chính phương thì add vào 1 mảng mới (ở đây, mình dùng vector, dùng mảng 1 chiều thường cũng được). Sau đó mình sort mảng mới theo thứ tự tăng dần, rồi in ra các phần tử (nếu trùng thì bỏ qua). Đây là code mình viết dù test trên live ide đúng, nhưng chỉ đúng test case cuối :<

Xem code

```cpp #include #include #include #include using namespace std; int main() { int arr[100][100]; vector Sq; int m, n, s; bool check = false; cin >> m >> n; for (int i = 0; i < m; ++i) for (int j = 0; j < n; ++j) cin >> arr[i][j]; for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { s = sqrt(arr[i][j]); if (s * s == arr[i][j] && arr[i][j] >= 0) { check = true; Sq.push_back(arr[i][j]); } } } if (!check) cout << "NOT FOUND"; else { sort(Sq.begin(), Sq.end()); cout << Sq[0]; for (int i = 1; i < Sq.size(); ++i) { if (Sq[i] != Sq[i - 1]) cout << Sq[i] << " "; } } return 0; } ```

Nvcuonghandsome commented 3 years ago

@Nvcuonghandsome mình nhập phần tử vào mảng 2 chiều, rồi check nếu là số chính phương thì add vào 1 mảng mới (ở đây, mình dùng vector, dùng mảng 1 chiều thường cũng được). Sau đó mình sort mảng mới theo thứ tự tăng dần, rồi in ra các phần tử (nếu trùng thì bỏ qua). Đây là code mình viết dù test trên live ide đúng, nhưng chỉ đúng test case cuối :< mình làm ra rồi nè bạn. Do lúc xóa phần tử hàm bị sai

ngocle7 commented 3 years ago

@Nvcuonghandsome bạn xem code mình sai ở đâu được không

Nvcuonghandsome commented 3 years ago

@Nvcuonghandsome bạn xem code mình sai ở đâu được không

mình học C chứ chưa học tới C++ nên k hiểu. chủ yếu là hàm xóa giá trị bị trùng ví dụ 4 4 9 thì mình dùng hàm xóa bớt số 4 thứ 2, gán số 4 thứ 2 = số 9, giảm độ dài chuỗi đi 1. in ra 4 9

ApokPhuoc commented 3 years ago

@ngocle7 Bn có thể tham khảo code mik ở https://luyencode.net/status/fae475b9c3c329a71be1c916da02af21?problem=MT06

NguyenThinhDatEng commented 3 years ago

test cuối là "NOT FOUND"

K1ethoang commented 3 years ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình. (C++) Chú ý <> chỗ include. Mình biết code mình hơi dài nhưng up cho mọi người tham khảo. Mình mới học nên không biết viết sao cho ngắn chỉ biết nghĩ sao làm vậy thôi ^^

Xem code AC

#include < iostream > #include < cmath > #define MAX_ROW 100 #define MAX_COLUMN 100 void input_and_get_square_nubmer(int arr[][MAX_COLUMN], int m, int n, int brr[], int &k); int check_square_number(int number); void sort(int arr[], int n); void output_square_number_array(int arr[], int n); void delete_element(int arr[], int &n, int position); int main() { int m, n; std::cin >> m >> n; int matrix[MAX_ROW][MAX_COLUMN]; int square_number_array[MAX_COLUMN]; // mảng để chứa số chính phương int k = 0; // đếm số phần tử của mảng chứ số chính phương input_and_get_square_nubmer(matrix, m, n, square_number_array, k); sort(square_number_array, k); if (k == 0) { std::cout << "NOT FOUND"; } else { output_square_number_array(square_number_array, k); } return 0; } void sort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (arr[i] > arr[j]) { std::swap(arr[i], arr[j]); } } } } int check_square_number(int number) { float result = sqrt(number); if (sqrt(number) == result) { return 1; } return 0; } void input_and_get_square_nubmer(int arr[][MAX_COLUMN], int m, int n, int brr[], int &k) // nhap va kiem tra xem co so chinh phuong khong neu co thi cho vao mang 1 chieu { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { std::cin >> arr[i][j]; if (check_square_number(arr[i][j]) == 1) { brr[k] = arr[i][j]; k++; } } } } void delete_element(int arr[], int &n, int position) // hàm xóa 1 phần tử trong mảng { for (int i = position; i < n; i++) { arr[i] = arr[i + 1]; } n--; } void output_square_number_array(int arr[], int n) // hàm này là hàm xóa số trùng trong mảng nhưng mình có chỉnh lại để thành hàm xuất luôn để khỏi lặp nhiều { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (arr[i] == arr[j]) { delete_element(arr, n, j); j--; } } std::cout << arr[i] << ' '; } }

thanhtung0512 commented 2 years ago

code cho b nao can tham khao https://anotepad.com/notes/2rweq6ww

Hawndt commented 2 years ago

EZ :)

SeaDragon1312 commented 2 years ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.

Xem code AC

```cpp #include #include using namespace std; int check(int n){ if(n<0) return 0; int r = sqrt(n); if(r*r==n) return 1; else return 0; } int main() { int m,n, cnt=0; cin>>m>>n; int a[m][n]; bool b[10001]; for(int i=0; i<=10000; i++){ b[i]=false; } for(int i=0; i>a[i][j]; if(check(a[i][j])){ b[a[i][j]]=true; cnt++; } } } if(cnt==0) cout<<"NOT FOUND"; else{ for(int i=0; i<=10000; i++){ if(b[i]) cout<

HaNguyen1099 commented 2 years ago

test 2, 3 là gì vậy mn

Gilgamesh-hoang commented 2 years ago

Đây là lời giải JAVA của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.

Xem code AC

``` import java.util.Scanner; import java.util.Set; import java.util.TreeSet; class Main { public static void main (String[] args){ Scanner sc = new Scanner(System.in); Set set = new TreeSet(); int m = sc.nextInt(); int n = sc.nextInt(); boolean c = false; int[][] a= new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { a[i][j] = sc.nextInt(); if (check(a[i][j])) { c = true; set.add(a[i][j]); } } } if (!c) System.out.println("NOT FOUND"); else { for (int i: set) { System.out.print(i+ " "); } } } static boolean check(int n) { if (n<0) return false; int r =(int) Math.sqrt(n); if(r*r == n) return true; else return false; } } ```

danh2006 commented 2 years ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.

Xem code AC

#include using namespace std; int check(int n){ int x = sqrt(n); if(pow(x, 2)==n) return true; else return false; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int m, n; cin >> m >> n; int a[m][n]; for(int i=0;i> a[i][j]; } } int b[1000], cnt = 0, temp = 0, k = 0; for(int i=0;i

luuquybip commented 2 years ago

1/4

mcuongit commented 2 years ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.

Xem code AC

```cpp #include #include #include #define M 100 using namespace std; int a[M][M]; void input(int m, int n) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } } bool laChinhPhuong(int n) { if (n < 1) return false; if ((int)sqrt(n) == sqrt(n)) return true; return false; } int main() { int m, n, x; int b[100]; cin >> m >> n; input(m, n); x = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (laChinhPhuong(a[i][j])) { b[x++] = a[i][j]; } } } sort(b, b + x); if (x == 0) { cout << "NOT FOUND"; } else { for (int i = 0; i < x; i++) { if (b[i] == b[i + 1]) continue; cout << b[i] << " "; } } return 0; } ```

oneheartt commented 1 year ago

Ủa mình sai ở đâu vậy mọi người

Xem code AC

#include #include #include #define uint unsigned int #define optimized_For_Loop(i,a,b) for(uint i=a; i> m >> n; int A[m][n]; optimized_For_Loop(i,0,m) optimized_For_Loop(j,0,n) cin >> A[i][j]; set Chinh_Phuong; optimized_For_Loop(i,0,m) optimized_For_Loop(j,0,n) if(chinh_Phuong(A[i][j])) Chinh_Phuong.insert(A[i][j]); if(Chinh_Phuong.size()==0){ cout << "NOT FOUND"; return 0; } for(auto x:Chinh_Phuong) cout << x << " "; return 0; }

btLong402 commented 1 year ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.

Xem code AC

```cpp #include using namespace std; #define SIZE 1001 int m,n; int A[SIZE]; int main(){ cin >> m >> n; int a, c = 0, k = 0; double sq; for(int i = 1; i <= m * n ; i++){ cin >> a; sq = sqrt(a); if(sq - (int)sq == 0){ A[k] = a; k++; } } if(k){ sort(A, A + k); for(int i = 0; i < k; i++){ if(A[i] > c){ cout << A[i] << " "; c = A[i]; } } cout << endl; } else{ cout << "NOT FOUND" << endl; } return 0; } ```

DoDung-BePresent commented 1 year ago

Cố lên mọi người ^^

C++

```ruby #include #include #include using namespace std; bool SCP(int n) { for (int i = 1; i <= sqrt(n); i++) if (i*i == n) return true; return false; } int main() { int m, n; cin >> m >> n; int arr[m*n]; set s; for (int i = 0; i < m*n; i++) { cin >> arr[i]; } for (int i = 0; i < m*n; i++) { if (SCP(arr[i])) s.insert(arr[i]); } if (s.empty()) cout << "NOT FOUND"; else for (int x:s) cout << x << " "; return 0; } ```

nxtruc commented 1 year ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình.Chúc các bạn thành công!

Xem code AC

#include using namespace std; #define ms(s,n) memset(s,n,sizeof(s)) #define all(a) a.begin(),a.end() #define present(t, x) (t.find(x) != t.end()) #define sz(a) int((a).size()) #define pb push_back #define pf push_front #define fi first #define se second #define mp make_pair typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair pi; typedef vector vi; const int MOD = (int) 1e9+7; const int INF = (int) 1e9+1; int check(int x) { if (x < 0) return false; int temp = sqrt(x); return (temp * temp == x) ? true : false; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, m; cin >> n >> m; int a[n][m], ok = false; for (int i = 0 ; i < n ; ++i) { for (int j = 0 ; j < m ; ++j) { cin >> a[i][j]; } } vector v; for (int i = 0 ; i < n ; ++i) { for (int j = 0 ; j < m ; ++j) { if (check(a[i][j])) { ok = true; v.pb(a[i][j]); } } } if (ok) { sort(begin(v), end(v)); for (int i = 0 ; i < v.size() ; ++i) { if (v[i] != v[i - 1]) { cout << v[i] << " "; } } } else { cout << "NOT FOUND"; } return 0; }

LesdSD commented 1 year ago

python cx de

dungchunhat1505 commented 1 year ago

Đây là lời giải của mình đã AC. Nếu bạn đã cố gắng mà chưa làm được thì có thể tham khảo lời giải của mình. Ý tưởng của mình là tìm số chính phương trong mảng A. Sau đó tạo 1 mảng B để thêm các số chính phương đó vào. Rồi sort mảng B cũng như xóa các phần tử trùng sẽ ra được kết quả.

include<bits/stdc++.h>

using namespace std; bool isSquare(int k) { int sqrtK=int(sqrt(k)); if (sqrtK*sqrtK==k&&k>0) return true; else return false; } void erase(int B[100], int &n, int vitri) { for (int i=vitri+1;i<n;i++) B[i-1]=B[i]; n--; } void eraseSimilar(int B[100], int &n) { for (int i=0;i<n-1;i++) { for (int j=i+1;j<n;j++) { if (B[i]==B[j]) { erase(B,n,j); i--; } } } } int main() { int m,n,count=0,index=0; cin>>m>>n; int A[m][n]; int B[100]={0}; for (int i=0;i<m;i++) for (int j=0;j<n;j++) cin>>A[i][j]; for (int i=0;i<m;i++) { for (int j=0;j<n;j++) { if (isSquare(A[i][j])) { B[index]=A[i][j]; index++; count++; } } } sort(B,B+count); eraseSimilar(B,count); if (count==0) cout<<"NOT FOUND"; else for (int i=0;i<count;i++) cout<<B[i]<<" ";
}