PUG - Đặt sỏi

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 0.005s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Trên một đoạn thẳng, đầu tiên người ta đặt hai viên sỏi cách xa nhau. Sau đó lặp đi lặp lại thao tác sau: Xác định trung điểm giữa hai viên sỏi liên tiếp trên đoạn thẳng, đặt thêm một viên sỏi vào vị trí đó.

ehyvAYtt.png

Ví dụ với hình vẽ trên, ta thấy:

  • Ban đầu chỉ có hai viên sỏi đặt trên một đường thẳng.
  • Lượt đặt thứ nhất ~(N = 1)~, thêm một viên sỏi vào trung điểm của hai viên ban đầu.
  • Ở lượt đặt thứ hai ~(N = 2)~, đã có ba viên sỏi của lượt trước và đặt thêm hai viên sỏi (được đánh số ~2~) vào vị trí trung điểm của hai đoạn thẳng như hình mô tả.

Giả sử luôn luôn có khoảng cách để có thể đặt một viên sỏi vào giữa hai viên sỏi.

Yêu cầu: Xác định số viên sỏi sau lượt đặt thứ ~N~? Vì kết quả có thể rất lớn nên chỉ cần đưa ra chữ số cuối cùng của đáp án.

Input

  • Một dòng duy nhất chứa số tự nhiên ~N (0 \le N \le 10^{18})~.

Output

  • Chữ số duy nhất là chữ số cuối cùng của số lượng sỏi đã đặt.

Sample

Input #1
4
Output #1
7

Hint

Giải thích #1:

  • Khi ~N = 4~ thì số sỏi là ~17~ viên, vậy đáp án in ra là ~7~.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    dinhvantung0611  đã bình luận lúc 20, Tháng 1, 2024, 11:36

    Ý tưởng: Áp dụng luỹ thừa nhị phần. Hoặc quy tắc chia dư để tìm số cuối cùng nhé