Vũ NgỌc DuY HoÀnG

Giới thiệu về bản thân

chào mừng đến với trang cá nhân của Hoàng
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
(Thường được cập nhật sau 1 giờ!)

x−1∈Ư(3x)⇔1−x1∈Ư(3)={±1;±3}

a)\(\frac{x^{2} + x + 1}{x - 1} = \frac{x^{2} - 2 x + 1}{x - 1} + \frac{3 x}{x - 1} = \left(\right. x - 1 \left.\right) + \frac{3 x}{x - 1}\)

Để \(x^{2} + x + 1 x - 1\) thì \(\frac{3 x}{x - 1}\) nguyên.Tức là


Chương trình đọc một bảng kích thước \(N \times M\) từ file BAI3.INP, tìm số lớn nhất trên mỗi hàng và vị trí của nó, sau đó ghi kết quả ra file BAI3.OUT. Nếu dữ liệu đầu vào không hợp lệ (N hoặc M không nằm trong khoảng (1, 100]), chương trình sẽ ghi -1 ra file output. Python
def solve():
    try:
        with open("BAI3.INP", "r") as f_in:
            line = f_in.readline().strip().split()
            n = int(line[0])
            m = int(line[1])
            
            if not (1 < n <= 100 and 1 < m <= 100):
                with open("BAI3.OUT", "w") as f_out:
                    f_out.write("-1")
                return

            matrix = []
            for _ in range(n):
                row = list(map(int, f_in.readline().strip().split()))
                matrix.append(row)

        with open("BAI3.OUT", "w") as f_out:
            for i in range(n):
                max_val = float('-inf')
                positions = []
                for j in range(m):
                    if matrix[i][j] > max_val:
                        max_val = matrix[i][j]
                        positions = [i * m + j + 1]
                    elif matrix[i][j] == max_val:
                        positions.append(i * m + j + 1)
                
                f_out.write(f"{max_val} {' '.join(map(str, positions))}\n")

    except FileNotFoundError:
        with open("BAI3.OUT", "w") as f_out:
            f_out.write("-1")
    except ValueError:
         with open("BAI3.OUT", "w") as f_out:
            f_out.write("-1")

solve()
Giải thích:
  1. 1. Đọc và kiểm tra dữ liệu đầu vào:
    • Đọc \(N\) và \(M\) từ dòng đầu tiên của file BAI3.INP.
    • Kiểm tra điều kiện \(1 < N, M \le 100\). Nếu không thỏa mãn, ghi -1 ra file BAI3.OUT và kết thúc.
    • Đọc ma trận từ các dòng tiếp theo của file.
  2. 2. Xử lý từng hàng:
    • Lặp qua từng hàng của ma trận (từ 0 đến \(N-1\)).
    • Trong mỗi hàng:
      • Khởi tạo max_val là giá trị nhỏ nhất có thể (- vô cùng) và một danh sách rỗng positions.
      • Lặp qua các phần tử trong hàng (từ 0 đến \(M-1\)):
        • Nếu giá trị hiện tại lớn hơn max_val:
          • Cập nhật max_val với giá trị hiện tại.
          • Xóa danh sách positions và thêm vị trí hiện tại vào.
        • Nếu giá trị hiện tại bằng max_val:
          • Thêm vị trí hiện tại vào danh sách positions.
      • Ghi kết quả:
        • Ghi max_val và các vị trí trong positions ra file BAI3.OUT, cách nhau bởi dấu cách.
  3. 3. Xử lý lỗi:
    • Nếu không tìm thấy file, hoặc dữ liệu không hợp lệ (không phải số nguyên), chương trình sẽ ghi -1 ra file BAI3.OUT.
Ví dụ: Giả sử file BAI3.INP có nội dung:
3 4
1 2 3 4
5 6 7 8
9 10 11 12
File BAI3.OUT sẽ có nội dung:
4 4
8 4
12 4

Tìm số lớn nhất và tất cả các vị trí tương ứng trên mỗi hàng của một bảng N×Mcap N cross cap M𝑁×𝑀ô vuông đơn vị.  Thông tin được cung cấp trong bài toán 
  • Kích thước bảng là N×Mcap N cross cap M𝑁×𝑀, với 1<N,M≤1001 is less than cap N comma cap M is less than or equal to 1001<𝑁,𝑀≤100.
  • Dữ liệu đầu vào từ file BAI3.INP:
    • Dòng đầu tiên chứa Ncap N𝑁 Mcap M𝑀.
    • Ncap N𝑁dòng tiếp theo, mỗi dòng chứa Mcap M𝑀số nguyên cách nhau bởi dấu cách.
  • Dữ liệu đầu ra ghi vào file BAI3.OUT:
    • Ncap N𝑁dòng, mỗi dòng là số lớn nhất của hàng và các vị trí của nó.
  • Nếu dữ liệu đầu vào sai điều kiện, ghi -1
Thông tin hữu ích 
  • Vị trí của một ô trong hàng ii𝑖và cột jj𝑗được tính là i×M+j+1i cross cap M plus j plus 1𝑖×𝑀+𝑗+1(nếu hàng và cột bắt đầu từ 000) hoặc (i−1)×M+jopen paren i minus 1 close paren cross cap M plus j(𝑖−1)×𝑀+𝑗(nếu hàng và cột bắt đầu từ 111).
  • Để tìm số lớn nhất trong một hàng, cần duyệt qua tất cả các phần tử trong hàng đó.
  • Để tìm tất cả các vị trí của số lớn nhất, cần duyệt lại hàng sau khi đã tìm được giá trị lớn nhất. 
Cách giải  Đọc dữ liệu từ file, kiểm tra điều kiện N,Mcap N comma cap M𝑁,𝑀, sau đó xử lý từng hàng để tìm giá trị lớn nhất và các vị trí của nó. 
  1. Bước 1 . Đọc và kiểm tra dữ liệu đầu vào
    • Đọc Ncap N𝑁 Mcap M𝑀từ file BAI3.INP.
    • Kiểm tra nếu 1<N,M≤1001 is less than cap N comma cap M is less than or equal to 1001<𝑁,𝑀≤100.
    • Nếu không thỏa mãn, ghi -1 vào BAI3.OUT và kết thúc.
  2. Bước 2 . Xử lý từng hàng
    • Lặp qua từng hàng từ i=1i equals 1𝑖=1đến Ncap N𝑁.
    • Trong mỗi hàng, khởi tạo max_val là giá trị nhỏ nhất có thể và một danh sách rỗng positions.
  3. Bước 3 . Tìm giá trị lớn nhất và vị trí
    • Duyệt qua các phần tử jj𝑗từ 111đến Mcap M𝑀trong hàng hiện tại.
    • Nếu giá trị hiện tại lớn hơn max_val, cập nhật max_val và xóa positions, sau đó thêm vị trí hiện tại vào positions.
    • Nếu giá trị hiện tại bằng max_val, thêm vị trí hiện tại vào positions.
    • Vị trí của ô (i,j)open paren i comma j close paren(𝑖,𝑗) (i−1)×M+jopen paren i minus 1 close paren cross cap M plus j(𝑖−1)×𝑀+𝑗.
  4. Bước 4 . Ghi kết quả
    • Ghi max_val và tất cả các positions vào file BAI3.OUT, cách nhau bởi dấu cách.
Giải pháp  Kết quả được ghi vào file BAI3.OUT theo định dạng: số lớn nhất của hàng và các vị trí tương ứng, cách nhau bởi dấu cách