IT Blog
RSS icon Email icon
  • Quadronacci Rectangle

    Posted on December 30th, 2012 Krasi Nikolov No comments
    using System;
    
    class QuadronacciRectangle
    {
        static void Main()
        {
            long[] q = new long[4];
            for (int i = 0; i < 4; i++)
            {
                q[i] = long.Parse(Console.ReadLine());
            }
            int r = int.Parse(Console.ReadLine());
            int c = int.Parse(Console.ReadLine());
            long[] cr = new long[c*r];
            for (int i = 0; i < 4; i++)
            {
                cr[i] = q[i];
            }
            for (int i = 4; i < c*r; i++)
            {
                cr[i] = cr[i - 1] + cr[i - 2] + cr[i - 3] + cr[i - 4];
            }
            for (int i = 0; i < r; i++)
            {
                for (int j = 0; j < c; j++)
                {
                    Console.Write(cr[i*c+j]);
                    if (j < c-1)
                    {
                        Console.Write(' ');
                    }
                }
                Console.WriteLine();
            }
        }
    }
    

    Следва условието на задачата.
    Read the rest of this entry »

  • Triple Rotation Of Digits

    Posted on December 29th, 2012 Krasi Nikolov No comments
    using System;
     
    class Program
    {
        static void Main()
        {
            int k = int.Parse(Console.ReadLine());
            for (int i = 0; i < 3; i++)
            {
                int count = CountNumbers(k);
                if (count == 1)
                {
                    break;
                }
                int lastDigit = k % 10;
                k = k / 10;
                for (int j = 0; j < count-1; j++)
                {
                    lastDigit *= 10;
                }
                k = lastDigit + k;
            }
            Console.WriteLine(k);
        }
        static int CountNumbers(int n)
        {
            int count = 0;
            do
            {
                n = n / 10;
                count++;
            } while (n> 0);
            return count;
        }
    }
    

    Read the rest of this entry »

  • Poker

    Posted on December 29th, 2012 Krasi Nikolov No comments

    На тази задача, доста се затрудних със “Streight”. Все още не бях направил, да тества А 2 3 4 5 6, но проверката през bgcoder ми даваше 100 %. Загубих още 1 час затова, бях 500/500, но ми се щеше задачите да са верни.

    using System;
    
    class Poker
    {
        static void Main()
        {
            string result;
            int[] cards = new int[5];
            for (int i = 0; i < 5; i++)
            {
                cards[i] = StringToNumber(Console.ReadLine());
            }
            Array.Sort(cards);
            bool isStraight = false;
            if (cards[0] == cards[4])
            {
                result = "Impossible";
            }
            else if ((cards[0] == cards[3]) || (cards[1] == cards[4]))
            {
                result = "Four of a Kind";
            }
            else if (((cards[0] == cards[2]) && (cards[3] == cards[4])) ||
                ((cards[0] == cards[1]) && (cards[2] == cards[4])))
            {
                result = "Full House";
            }
    
            else if (IsStraight(cards))
            {
                result = "Straight";
            }
            else if ((cards[0] == cards[2]) || (cards[1] == cards[3]) || (cards[2] == cards[4]))
            {
                result = "Three of a Kind";
            }
            else if (((cards[0] == cards[1]) && (cards[2] == cards[3])) ||
                ((cards[0] == cards[1]) && (cards[3] == cards[4])) ||
                ((cards[1] == cards[2]) && (cards[3] == cards[4])))
            {
                result = "Two Pairs";
            }
            else if ((cards[0] == cards[1]) || (cards[1] == cards[2]) || (cards[2] == cards[3]) ||
                (cards[3] == cards[4]))
            {
                result = "One Pair";
            }
            else
            {
                result = "Nothing";
            }
            Console.WriteLine(result);
        }
    
    
    
    
        static bool IsStraight(int[] card)
        {
            int[] current = card;
            bool isStraight = true;
            for (int i = 1; i < current.Length; i++)
            {
    
                if ((current[i] != current[i - 1] + 1) && (current[i] != current[i - 1] + 9))
                {
                    isStraight = false;
                    break;
                }
            }
    
            return isStraight;
        }
    
        static int StringToNumber(string text)
        {
            int number = 0;
            switch (text)
            {
                case "J":
                    number = 11;
                    break;
                case "Q":
                    number = 12;
                    break;
                case "K":
                    number = 13;
                    break;
                case "A":
                    number = 14;
                    break;
                default:
                    number = int.Parse(text);
                    break;
            }
            return number;
        }
    }
    
  • Angry Bits

    Posted on December 29th, 2012 Krasi Nikolov No comments

    Доста неща не са добре изпипани, но докато си напрегнат правиш нещата да работят, по първият начин за който се сетите.
    Това в началото е основната част от задачата, а именно движението на птицата до достигане на прасе. Тук загубих 1 час, защото бях пропуснал, това че движението завършва не само вляво а и долу.

                    do
                    {
                        flight++;
                        birdCol--;
                        if ((birdRow + addToRow < 0) || (birdRow + addToRow > 7))
                        {
                            addToRow *= -1;
                        }
                        birdRow += addToRow;
                        if ((birdCol < 8) && (field[birdRow, birdCol] == 1))
                        {
                            for (int k = birdRow - 1; k <= birdRow + 1; k++)
                            {
                                for (int l = birdCol - 1; l <= birdCol + 1; l++)
                                {
                                    if ((k >= 0) && (k < 8) && (l >= 0) && (l < 8))
                                    {
                                        if (field[k, l] == 1)
                                        {
                                            hit++;
                                            field[k, l] = 0;
                                        }
                                    }
                                }
                            }
                            birdCol = -1;
                        }
                        if (birdRow == 7)
                        {
                            birdCol = -1;
                        }
                  } while (birdCol > 0);
    
    

    Цялото решение:
    Read the rest of this entry »

  • Subset sums

    Posted on December 28th, 2012 Krasi Nikolov No comments

    Използвам побитови оператори за да намеря всички възможни суми при N числа.
    Например ако имаме 3 числа, сумите са 8 на брой, т.е. 2 на степен 3.
    S0 = 0*N1 + 0.N2 + 0*N3
    S1 = 0*N1 + 0.N2 + 1*N3
    S2 = 0*N1 + 1.N2 + 0*N3
    S3 = 0*N1 + 1.N2 + 1*N3
    S4 = 1*N1 + 0.N2 + 0*N3
    S5 = 1*N1 + 0.N2 + 1*N3
    S6 = 1*N1 + 1.N2 + 0*N3
    S7 = 1*N1 + 1.N2 + 1*N3

    using System;
    
    class SubsetSum
    {
        static void Main()
        {
            long s = long.Parse(Console.ReadLine());
            int n = int.Parse(Console.ReadLine());
            long[] number = new long[n];
            int count = 0;
            for (int i = 0; i < n; i++)
            {
                number[i] = long.Parse(Console.ReadLine());
            }
            for (int i = 1; i < Math.Pow(2,n); i++)
            {
                if (s == CalculateSum(i,number))
                {
                    count++;
                }
            }
            Console.WriteLine(count);
        }
        static long CalculateSum(int subSet, long[] number)
        {
            long sum = 0;
            for (int i = 0; i < number.Length; i++)
            {
                int bit = (subSet & (1<<i)) >> i;
                sum += number[i]*bit;
            }
            return sum;
        }
    }
    

      Read the rest of this entry »