Tin học Chữ số khác không của bội chung nhỏ nhất

Nguyễn Trần Phát

Học sinh mới
Thành viên
8 Tháng chín 2020
111
44
11
16
Nghệ An
THCS Đặng Thai Mai
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Yêu cầu: Tìm chữ số tận cùng khác không của lcm(1,2,3,...,n) với lcm phép lấy bội chung nhỏ nhất của các số nguyên.
Dữ liệu: Gồm một số dòng mỗi dòng ghi số nguyên dương n (n<=106)
Kết quả:
Gồm nhiều dòng tương ứng như đầu vào, mỗi dòng ghi kết quả tương ứng là chữ số khác không đầu tiên kể từ bên trái của lcm(1,2,...,n).
 

System32

Học sinh chăm học
Thành viên
25 Tháng chín 2018
343
348
76
Hà Nội
THPT Marie Curie
Yêu cầu: Tìm chữ số tận cùng khác không của lcm(1,2,3,...,n) với lcm phép lấy bội chung nhỏ nhất của các số nguyên.
Dữ liệu: Gồm một số dòng mỗi dòng ghi số nguyên dương n (n<=106)
Kết quả:
Gồm nhiều dòng tương ứng như đầu vào, mỗi dòng ghi kết quả tương ứng là chữ số khác không đầu tiên kể từ bên trái của lcm(1,2,...,n).
Python code
Mã:
import math


def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(iter(input, integers))

for n in integers:
    multi_lcm = 1
    for i in range(2, int(n) + 1):
        multi_lcm = lcm(multi_lcm, i)
    print(multi_lcm)
 

System32

Học sinh chăm học
Thành viên
25 Tháng chín 2018
343
348
76
Hà Nội
THPT Marie Curie
Bài này bị sai anh ơi.
À anh quên mất là tìm chữ số tận cùng khác không:v
Mã:
import math


def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(iter(input, integers))

for n in integers:
    multi_lcm = 1
    for i in range(2, int(n) + 1):
        multi_lcm = lcm(multi_lcm, i)
    while multi_lcm % 10 == 0:
        multi_lcm //= 10
    print(str(multi_lcm)[-1])
 

Nguyễn Trần Phát

Học sinh mới
Thành viên
8 Tháng chín 2020
111
44
11
16
Nghệ An
THCS Đặng Thai Mai
À anh quên mất là tìm chữ số tận cùng khác không:v
Mã:
import math


def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(iter(input, integers))

for n in integers:
    multi_lcm = 1
    for i in range(2, int(n) + 1):
        multi_lcm = lcm(multi_lcm, i)
    while multi_lcm % 10 == 0:
        multi_lcm //= 10
    print(str(multi_lcm)[-1])
còn cách nào nhanh hơn không anh vì nó chạy quá thời gian cho phép anh ạ.
 

System32

Học sinh chăm học
Thành viên
25 Tháng chín 2018
343
348
76
Hà Nội
THPT Marie Curie
còn cách nào nhanh hơn không anh vì nó chạy quá thời gian cho phép anh ạ.
Em thử cái này xem
Mã:
import math

def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(map(int, list(iter(input, integers))))

multi_lcm = 1
for i in range(2, sorted(integers)[-1] + 1):
    multi_lcm = lcm(multi_lcm, i)
    if i in integers:
        ans = multi_lcm
        while ans % 10 == 0:
            ans //= 10
        print(str(ans)[-1])
 
  • Like
Reactions: giangha13062013

Nguyễn Trần Phát

Học sinh mới
Thành viên
8 Tháng chín 2020
111
44
11
16
Nghệ An
THCS Đặng Thai Mai
Em thử cái này xem
Mã:
import math

def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(map(int, list(iter(input, integers))))

multi_lcm = 1
for i in range(2, sorted(integers)[-1] + 1):
    multi_lcm = lcm(multi_lcm, i)
    if i in integers:
        ans = multi_lcm
        while ans % 10 == 0:
            ans //= 10
        print(str(ans)[-1])
Có vẻ hình như ah quên gì đó. Nó sai kết quả ah ạ
 

System32

Học sinh chăm học
Thành viên
25 Tháng chín 2018
343
348
76
Hà Nội
THPT Marie Curie
Có vẻ hình như ah quên gì đó. Nó sai kết quả ah ạ
Không phải là kết quả sai đâu. Chỉ là nó in không đúng thứ tự
Sủa lại nhé:
Mã:
import math

def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(map(int, list(iter(input, integers))))

multi_lcm = 1
ans = {}
for i in range(2, sorted(integers)[-1] + 1):
    multi_lcm = lcm(multi_lcm, i)
    if i in integers:
        temp = multi_lcm
        while temp % 10 == 0:
            temp //= 10
        ans[i] = str(temp)[-1]
for i in integers:
    print(ans[i])
 

Nguyễn Trần Phát

Học sinh mới
Thành viên
8 Tháng chín 2020
111
44
11
16
Nghệ An
THCS Đặng Thai Mai
Không phải là kết quả sai đâu. Chỉ là nó in không đúng thứ tự
Sủa lại nhé:
Mã:
import math

def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(map(int, list(iter(input, integers))))

multi_lcm = 1
ans = {}
for i in range(2, sorted(integers)[-1] + 1):
    multi_lcm = lcm(multi_lcm, i)
    if i in integers:
        temp = multi_lcm
        while temp % 10 == 0:
            temp //= 10
        ans[i] = str(temp)[-1]
for i in integers:
    print(ans[i])
Em cảm ơn a ạ
 

Nguyễn Trần Phát

Học sinh mới
Thành viên
8 Tháng chín 2020
111
44
11
16
Nghệ An
THCS Đặng Thai Mai
Không phải là kết quả sai đâu. Chỉ là nó in không đúng thứ tự
Sủa lại nhé:
Mã:
import math

def lcm(a, b):
    return (a * b) // math.gcd(a, b)

integers = ''
integers = list(map(int, list(iter(input, integers))))

multi_lcm = 1
ans = {}
for i in range(2, sorted(integers)[-1] + 1):
    multi_lcm = lcm(multi_lcm, i)
    if i in integers:
        temp = multi_lcm
        while temp % 10 == 0:
            temp //= 10
        ans[i] = str(temp)[-1]
for i in integers:
    print(ans[i])
E có một đề nghị nữa. Nếu có thể thì anh làm cho e bài này bằng C++ đc ko anh? Còn nếu anh thấy phiền quá hoặc anh ko làm đc thì anh không cần làm đâu nha anh!
 
Top Bottom