Điểm:
100 (p)
Thời gian:
1.0s
Bộ nhớ:
1G
Input:
bàn phím
Output:
màn hình
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í đó.
- 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ư trên hình mô tả.
Giả sử 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.
Hỏi: Sau lượt đặt thứ \(N\) có tất cả bao nhiêu viên sỏi. 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 chứa một số tự nhiên \(N\) (\(N \le 10^9\)).
Output
- Một số duy nhát là chữ số cuối của số lượng sỏi đã đặt.
Example
Test 1
Input
2
Output
5
Note
Khi \(N = 2\) thì số sỏi là \(5\) viên.
Test 2
Input
4
Output
7
Note
Khi \(N = 4\) thì số sỏi là \(17\) viên. Vì vậy đưa ra đáp án là \(7\).
Bình luận
n = int(input())
def is_increase(x):
x = str(x)
for i in range(1 , len(x)):
if int(x[i-1]) >= int(x[i]):
return False
return True
def reversed(x):
ans = ""
x = str(x)
for i in range(0, len(x)):
ans = x[i] + ans
return ans
ans = 0
for i in range(1, 100000):
if not is_increase(i):
continue
tmp = str(i)
tmp2 = reversed(tmp)
if int(tmp + tmp2) <= n:
ans += 1
if int(tmp + tmp2[1:]) <= n:
ans += 1
print(ans)
của người ta ngắn gọn:
from sys import stdin , stdout
n = int(stdin.readline())
a = [6 , 2 , 4 , 8]
print(2 + (a[n % 4] - 1))
Ngắn hơn`
a=int(input())
if(a>0):
print('7359'[a%4])
else:
print(2)
ngắn gọn hơn
if test :))
dài thế
code bai khac ma