-
Quadronacci Rectangle
Posted on December 30th, 2012 No commentsusing 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 No commentsusing 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; } }
-
Poker
Posted on December 29th, 2012 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 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 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*N3using 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; } }
Recent Comments