BCSRETAN spoj PTIT- Số may mắn thứ K
Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCSRETAN/ 1. Đề bài BCSRETAN spoj PTIT Chí Phèo thời IT rất yêu thích các số may mắn. Số may mắn là số mà chỉ chứa các chữ số may mắn (có hai chữ số may mắn là 4 và 7) trong biểu diễn thập phân. Các số may mắn sắp xếp tăng dần tạo ...
Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCSRETAN/
1. Đề bài BCSRETAN spoj PTIT
Chí Phèo thời IT rất yêu thích các số may mắn. Số may mắn là số mà chỉ chứa các chữ số may mắn (có hai chữ số may mắn là 4 và 7) trong biểu diễn thập phân. Các số may mắn sắp xếp tăng dần tạo thành dãy số may mắn. Một số số hạng đầu tiên của dãy số may mắn là: 4,7,44,47,74,77,… Biết Chí có niềm yêu thích như vậy, Thị Nở liền đố Chí tìm số may mắn thứ K trong dãy. Bài toán thực sự hóc búa với Chí, bạn hãy giúp anh Chí câu hỏi này nhé !
Input
Một số nguyên K duy nhất (1≤K≤109)
Output
Số may mắn thứ K trong dãy số may mắn.
Example
Input:
1
Output:
4
Input:
3
Output:
44
2. Hướng dẫn BCSRETAN spoj PTIT
Nếu bạn để ý thì sẽ dễ dàng nhận ra dãy số 4,7,44,47,74,77,… chính là dãy nhị phân. như vậy bạn chỉ cần sinh dãy nhị phân là được
3. Code tham khảo BCSRETAN spoj PTIT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | const fi='; nmax=1000000000; A:array[1..2] of byte=(4,7); type data=longint; var f:text; k,n:data; kq:array[0..30] of data; spt:data; procedure xuli; var i:data; begin k:=k+1; spt:=0; while k<>0 do begin inc(spt); kq[spt]:=k mod 2; k:=k div 2; end; for i:=spt-1 downto 1 do if kq[i]=0 then write(4) else write(7); end; begin assign(f,fi); reset(f); readln(f,k); close(f); xuli; end. |