30/09/2018, 19:13

Chúc mừng năm mới 2016!

Để năm mới may mắn hơn mình sẽ đố vui một bài toán đầu năm như sau:
Tìm chữ số đầu tiên và cuối cùng của 2016^2016

chu đức anh viết 21:22 ngày 30/09/2018

số cuối cùng chắc chắn là 6. Còn số đầu tiên thì … K biết.

Tien Phan viết 21:24 ngày 30/09/2018

số đầu là 4 số cuối là 6 không biết có đúng không

X viết 21:26 ngày 30/09/2018

Góp vui lấy trước số cuối

7

Itachi Citus viết 21:14 ngày 30/09/2018

Số đầu là số 6, do chữ số hàng đơn vị của tích số chỉ bị ảnh hưởng bởi hai chữ số hàng đơn vị của hai thừa số.
Số cuối là số 6, không biết trình bày sao .

Thành Phạm viết 21:28 ngày 30/09/2018

Hình như là 7 và 6

Lê Tuấn Anh viết 21:25 ngày 30/09/2018

Em cũng góp vui 7-6

Gió viết 21:26 ngày 30/09/2018

Bài này có thể giải bằng toán. Không cần tính số lớn để tìm số đầu tiên đâu

Nguyễn Thành Đạt viết 21:25 ngày 30/09/2018

làm như thế nào v ạ, chỉ e với.

Gió viết 21:14 ngày 30/09/2018

Dùng BigInteger trong java có thể giải nhanh như sau:

System.out.println(BigInteger.valueOf(2016).pow(2016));
Nguyễn Hoàng Trung viết 21:15 ngày 30/09/2018

Nếu là C hay C++ thì sao ạ?

Thành Phạm viết 21:19 ngày 30/09/2018

Giải bằng toán kiểu gì vậy ạ

Minh Hoàng viết 21:23 ngày 30/09/2018

Dùng logarit…

Gió viết 21:16 ngày 30/09/2018

Lời giải khá ngắn như sau:
Giả sử A=2016^2016, a là chữ số đầu, k là số chữ số của A
ta có: a*10^(k-1)<= A<= (a+1)10^(k-1)
logarit cơ số 10 2 vế
loga+k-1<= logA< log(a+1)+ k-1
dễ dàng suy ra k=[logA]+1= [2016
log2016]+1 = 6662
loga<={logA}; log(a+1)> {logA}
=> a=[10^{logA}] = 7

{} là phép lấy phần thập phân
[] là phép lấy phần nguyên

viết 21:27 ngày 30/09/2018

Gọi M là chữ số đầu tiên, 1 <= M <= 9. Ta có:

20162016 = M.mantissa x 10exponential
log10(20162016) = log10(M.mantissa x 10exponential)
2016 x log10(2016) = log10(M.mantissa) + log10(10exponential)
6661.852904 = log10(M.mantissa) + exponential

trong đó:

  • mantissa là phần thập phân < 1.0,
  • (exponential+1) là số chữ số của 20162016

vì mantissa < 1 nên M.mantissa = M + mantissa < 10. Vậy log10(M.mantissa) < 1. Hay phần này chính là phần thập phân của 6661.852904.

vậy ta có:
log10(M.mantissa) = 0.852904
M.mantissa = 100.852904
M.mantissa = 7.1269…

vậy M = 7

edit: ặc, viết lời giải trễ 2 phút

đỗ thế anh viết 21:18 ngày 30/09/2018

dùng modum chắc ra

Lập Trình Sư viết 21:15 ngày 30/09/2018

toàn chuyên Toán với chuyên Tin thế này

Chế Tiệp Chân Khoa viết 21:19 ngày 30/09/2018

python thần thánh, vài tích tắc thôi sao cái này tính nhanh thế mà em code giaỉ thuật độ phức tạp cao là nó đớ lun v

Thành Phạm viết 21:24 ngày 30/09/2018

Bác có biết là lúc đầu em lo xa phải ngồi cài numpy không xong lúc đang chờ nó cài đặt thì thử pow cái được luôn hư cấu v~

viết 21:26 ngày 30/09/2018

Python có opeator mũ mà, xài pow chi. Gõ 2016**2016 là ra rồi

Thành Phạm viết 21:20 ngày 30/09/2018

Tại em nghĩ pow lớn quá sợ nó k tính nổi à mà lúc đó lại phát hiện ra cái thú vị, python có 2 cái pow, 1 cái math.pow nữa nếu mà lỡ from math import * là toi

Bài liên quan
0