Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- 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();
- }
- }
- interface Stack <E>{
- public boolean isEmpty(); //dali stekot e prazen
- public E peek(); // go vrkja elementot na vrvot bez da go izbrishe
- public void clear(); // go brishe stekot
- public void push(E x); //dodava element na vrvot
- public E pop(); //brishe element od vrvot i ni go vrakja istiot
- }
- class ArrayStack<E> implements Stack<E> {
- private E [] elems; //niza od elementite vo stekot so indeksi [0,depth-1]
- private int depth; //dlabocina na stekot odnosno kolku elementi ke ima
- public ArrayStack(int maxDepth){
- elems=(E[]) new Object [maxDepth]; //maxDepth e maksimalnata golemina na nizata!!! Razlicno od depth shto e momentalna golemina!!!
- depth = 0; //inicijalno bidejki nemame element depth e 0
- }
- @Override
- public boolean isEmpty() {
- return (depth==0); //ako e 0, vrakja true - stekot nema elementi, ako ne stekot ima elementi i vrakja true
- }
- @Override
- public E peek() {
- if(depth==0)
- throw new NoSuchElementException();
- return elems[depth-1]; //ke go vrati posledniot
- }
- @Override
- public void clear() {
- for(int i=0;i<depth;i++){
- elems[i]=null;
- }
- depth=0;
- }
- @Override
- public void push(E x) {
- elems[depth]=x;
- depth++;
- }
- @Override
- public E pop() {
- if(depth==0)
- throw new NoSuchElementException();
- E topmost=elems[--depth];
- elems[depth]=null;
- return topmost;
- /*
- E topmost=elems[depth-1];
- elems[depth-1]=null;
- depth--;
- return topmost;*/
- }
- }
- interface Queue<E>{
- public boolean isEmpty(); // proveruva dali redicata e prazna
- public int size(); // ja vrakja dolzinata na redicata
- public void clear(); // ja prazni redicata
- public E peek(); // ni go dava elementot koj se naogja na pocetokot -front,glava
- public void enqueue(E x); // dodava element na krajot na redicata
- public E dequeue(); //go brishe elementot na pocetok na redicata i ni ja vrakja negovata vrednost
- }
- class LinkedQueue<E> implements Queue<E> {
- private SLLNode<E> front, rear; //front e link do prviot jazel od redicata, rear e link do posledniot jazel od redicata
- private int length; //goleminata na redicata
- public LinkedQueue(){
- clear();
- }
- @Override
- public boolean isEmpty() {
- return (length==0);
- }
- @Override
- public int size() {
- return length;
- }
- @Override
- public void clear() {
- front=rear=null;
- length=0;
- }
- @Override
- public E peek() {
- if(front==null)
- throw new NoSuchElementException();
- return front.element;
- }
- @Override
- public void enqueue(E x) {
- SLLNode<E> latest = new SLLNode<>(x, null); //pravime nov jazol koj ke go sodrzi xi ke pokazuva na nula
- if (rear != null) { //ako ne stanuva zbor za prv element
- rear.succ = latest;
- rear = latest;
- } else {
- front = rear = latest; // ako e prv element vo listata voedno e i posleden pa i rear i front ke pokazuvaat na nego
- }
- length++;
- }
- @Override
- public E dequeue() {
- if(front!=null){ //ako redicata ima elementi
- E frontmost=front.element;
- front=front.succ; //noviot front e front successor
- if (front == null) { //ama ako naredniot front e null, t.e ako se vadelo eden element a redicata imala samo eden element
- rear=null; //znaci deka i rear e null t.e redicata e prazna!!!
- }
- length--;
- return frontmost;
- }
- else throw new NoSuchElementException();
- }
- }
- public class card_trick {
- public static int count(int N){
- LinkedQueue<Integer> shpil = new LinkedQueue<Integer>();
- ArrayStack<Integer> stek = new ArrayStack<Integer>(7);
- int brojac = 0;
- boolean flag = false;
- for(int i=1;i<52;i++) {
- shpil.enqueue(i);
- }
- while (flag == false) {
- for (int i = 0; i < 7; i++) {
- stek.push(shpil.dequeue());
- }
- while (!stek.isEmpty()) {
- shpil.enqueue(stek.pop());
- shpil.enqueue(shpil.dequeue());
- }
- brojac++;
- if (shpil.peek() == N) {
- return brojac;
- }
- flag = false;
- }
- return 0;
- }
- 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())));
- }
- }
Add Comment
Please, Sign In to add comment