Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Перо прави трик со карти. Тој има шпил од 51-на карта (некој некогаш не му вратил една) од којшто ви дозволува да влечете карта. Тој, за трикот да биде веродостоен, не ја знае картата, но знае на која позиција се наоѓа. Мааната на Перо е тоа што тој не знае регуларно да измеша карти, туку ги зема првите седум карти, им им го превртува редоследот (пр. од 1 2 3 4 5 6 7 ги реди во 7 6 5 4 3 2 1), потоа зема една карта од превртените и една од врвот од шпилот и го става на крајот од шпилот, така се додека не ги потроши сите седум карти. Со тоа остварува едно мешање на шпил. Ваша задача е, да изработите симулцаија на ваквото мешање, такашто за дадена N-та карта т.ш. 1<=N<=51, вие ќе му изброите колку вакви мешања треба тој да направи за на врв на шпилот да дојде извлечената карта.
- Име на класата: card_trick
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Collection;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.Queue;
- import java.util.Stack;
- import java.util.NoSuchElementException;
- class SLLNode<E> {
- protected E element;
- protected SLLNode<E> succ;
- public SLLNode(E elem, SLLNode<E> succ) {
- this.element = elem;
- this.succ = succ;
- }
- @Override
- public String toString() {
- return element.toString();
- }
- }
- class LinkedQueue<E> implements Queue<E> {
- // Redicata e pretstavena na sledniot nacin:
- // length go sodrzi brojot na elementi.
- // Elementite se zachuvuvaat vo jazli dod SLL
- // front i rear se linkovi do prviot i posledniot jazel soodvetno.
- SLLNode<E> front, rear;
- int length;
- // Konstruktor ...
- public LinkedQueue () {
- clear();
- }
- public boolean isEmpty () {
- // Vrakja true ako i samo ako redicata e prazena.
- return (length == 0);
- }
- public int size () {
- // Ja vrakja dolzinata na redicata.
- return length;
- }
- public E peek () {
- // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
- if (front == null)
- throw new NoSuchElementException();
- return front.element;
- }
- public void clear () {
- // Ja prazni redicata.
- front = rear = null;
- length = 0;
- }
- public void enqueue (E x) {
- // Go dodava x na kraj od redicata.
- SLLNode<E> latest = new SLLNode<E>(x, null);
- if (rear != null) {
- rear.succ = latest;
- rear = latest;
- } else
- front = rear = latest;
- length++;
- }
- public E dequeue () {
- // Go otstranuva i vrakja pochetniot element na redicata.
- if (front != null) {
- E frontmost = front.element;
- front = front.succ;
- if (front == null) rear = null;
- length--;
- return frontmost;
- } else
- throw new NoSuchElementException();
- }
- @Override
- public boolean addAll(Collection<? extends E> c) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean contains(Object o) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean containsAll(Collection<?> c) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public Iterator<E> iterator() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public boolean remove(Object o) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean removeAll(Collection<?> c) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean retainAll(Collection<?> c) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public Object[] toArray() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public <T> T[] toArray(T[] a) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public boolean add(E e) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public E element() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public boolean offer(E e) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public E poll() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public E remove() {
- // TODO Auto-generated method stub
- return null;
- }
- }
- public class card_trick {
- public static int count(int N){
- LinkedQueue<Integer> spil = new LinkedQueue<Integer>();
- Stack<Integer> flip = new Stack<Integer>();
- int count = 0;
- for(int i=1; i<52; i++){
- spil.enqueue(i);
- }
- while(true){
- for(int i=0; i<7; i++){
- flip.push(spil.dequeue());
- }
- while(!flip.isEmpty()){
- spil.enqueue(flip.pop());
- spil.enqueue(spil.dequeue());
- }
- count++;
- if(spil.peek() == N){
- return count;
- }
- }
- }
- public static void main(String[] args) throws NumberFormatException, IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
- System.out.println(count(Integer.parseInt(br.readLine())));
- }
- }
- Sample input
- 15
- Sample output
- 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement