Лифт
Чтобы поднять на N-й этаж M-этажного дома новый холодильник, Витя вызвал бригаду грузчиков. Оплата работы грузчиков производится так: за подъем холодильника на один этаж требуется заплатить 200 рублей, за спуск на один этаж - 100 рублей. За подъем и спуск на лифте плата не взимается. Несмотря на то, что в Витином доме есть лифт, ему возможно все же придется заплатить грузчикам, поскольку лифт останавливается только на каждом K-м этаже, начиная с первого (то есть на этажах с номерами 1, K+1, 2K+1, 3K+1, ...). Требуется вычислить, какой минимальной суммы денег достаточно, чтобы грузчики доставили холодильник с первого этажа на N-й.
Входные данные
Во входном файле записаны три числа: M (2 ≤ M ≤ 100), N (2 ≤ N ≤ M) и K (2 ≤ K ≤ M-1), разделенные пробелами.
Выходные данные
Выведите одно число - минимальную стоимость подъема холодильника.
Вхідні дані
Sample 1
20 7 4
Sample 2
20 7 2
Вихідні дані
Sample 1
200
Sample 2
0
Чтобы поднять на N-й этаж M-этажного дома новый холодильник, Витя вызвал бригаду грузчиков. Оплата работы грузчиков производится так: за подъем холодильника на один этаж требуется заплатить 200 рублей, за спуск на один этаж - 100 рублей. За подъем и спуск на лифте плата не взимается. Несмотря на то, что в Витином доме есть лифт, ему возможно все же придется заплатить грузчикам, поскольку лифт останавливается только на каждом K-м этаже, начиная с первого (то есть на этажах с номерами 1, K+1, 2K+1, 3K+1, ...). Требуется вычислить, какой минимальной суммы денег достаточно, чтобы грузчики доставили холодильник с первого этажа на N-й.
Входные данные
Во входном файле записаны три числа: M (2 ≤ M ≤ 100), N (2 ≤ N ≤ M) и K (2 ≤ K ≤ M-1), разделенные пробелами.
Выходные данные
Выведите одно число - минимальную стоимость подъема холодильника.
Вхідні дані
Sample 1 20 7 4 Sample 2 20 7 2
Вихідні дані
Sample 1 200 Sample 2 0
public static void Main(string[] args) { string setir = Console.ReadLine(); var massiv = setir.Split(' '); int m = int.Parse(massiv[0]); int n = int.Parse(massiv[1]); int k = int.Parse(massiv[2]); int c = ((n - 1)/k)*k + 1; int min = (n - c)*200; if (c + k <= m) min = Math.Min(min, (c + k - n)*100); Console.WriteLine(min); }
Паліндром
Паліндром - це рядок, який однаково читається зліва направо і зправа наліво. Складіть програму, яка перевіряє, чи є заданий текст паліндромом. Не забудьте, що при читанні пропуск ніяк не вимовляється.
Вхідні дані
Рядок S (|S| ≤ 255) складається з рядкових латинських літер і пропусків. Під |S| розуміється довжина рядка.
Вихідні дані
Вивести "YES", якщо текст є паліндромом та "NO" інакше.
Вхідні дані #1
palindrom
Вихідні дані #1
NO
Вхідні дані #2
a roza upala na lapu azora
Вихідні дані #2
YES
private static string Gu(string x) { string y = ""; int len = x.Length; for (int i = 0; i < len; i++) y = x[i] + y; return y; } public static void Main(string[] args) { string s = Console.ReadLine(); s = s.Replace(" ", ""); Console.WriteLine(s == Gu(s) ? "YES" : "NO"); } }
Площа чотирикутника
Визначити площу чотирикутника з вершинами
A
(x1
,y1
), B
(x2
,y2
), C
(x3
,y3
), D
(x4
,y4
).Вхідні дані
В одному рядку задано координати послідовних вершин чоторикутника. Всі числа цілі та не перевишують за модулем 100.
Вихідні дані
Вивести площу чотирикутника, округлену до цілих.
Вхідні дані
1 4 5 4 4 2 2 1
Вихідні дані
8
var x1,y1,x2,y2,x3,y3,x4,y4: Integer; s: Real;
begin
readln(x1,y1,x2,y2,x3,y3,x4,y4);
s:=0.5*Abs((x1*y2-y1*x2)+(x2*y3-y2*x3)+(x3*y4-y3*x4)+(x4*y1-y4*x1));
writeln(s:0:0);
end.
Степеневі числа
Число n називається степеневим, якщо його можна отримати з деякого числа множенням на себе хоча б один раз. Наприклад, 4 степеневе число, оскільки 4 = 2 · 2, 27 також степеневе число, бо 27 = 3 · 3 · 3, а 28 не є степеневим числом. Визначити, чи є задані числа степеневими.
Вхідні дані
У першому рядку записано одне натуральне число n - кількість досліджуваних чисел (1 ≤ n ≤ 10). У другому рядку через пропуск записано nчисел - досліджувані числа. Кожне з них більше 1 і менше
109
.Вихідні дані
Вивести n рядків. В i-му рядку записати YES, якщо i-те число є степеневим і NO у противному випадку.
public static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
string setir = Console.ReadLine();
var massiv = setir.Split(' ');
int max = 0;
int[] a = new int[n];
for (int i = 0; i < n; i++)
{
a[i] = int.Parse(massiv[i]);
if (a[i] > max) max = a[i];
}
HashSet<long> siyahi = new HashSet<long> {1};
int log = (int) Math.Log(max, 2) + 1;
int kok = (int) Math.Sqrt(max) + 1;
for (int i = 2; i < kok; i++)
{
for (int j = 2; j < log; j++)
{
long cari = (long) Math.Pow(i, j);
if (cari <= max && !siyahi.Contains(cari)) siyahi.Add(cari);
}
}
for (int i = 0; i < n; i++)
{
Console.WriteLine(siyahi.Contains(a[i]) ? "YES" : "NO");
}
Стовбці
Задано таблицю n × n, заповнену цілими числами. Петро Перший вважає стовбець хорошим, якщо той містить число x. Потрібно для кожного стовбця вияснити, чи є той хорошим.
Вхідні дані
У першому рядку задано число x, яке не перевищує по модулю 2 *
109
. У другому рядку задано число n (1 ≤ n ≤ 100). Кожен з наступних nрядків містить по n цілих чисел, що не перевищують за модулем 2 *109
- числа у комірках таблиці.Вихідні дані
Для кожного стовбця в окремому рядку виведіть YES, якщо в ньому є число x, і NO у протилежному випадку.
Вхідні дані #1
1 2 0 1 0 0
Вихідні дані #1
NO YES
private static string Yo(int[,] a, int j, int x)
{
int n = (int) Math.Sqrt(a.Length);
for (int i = 0; i < n; i++)
{
if (a[i, j] == x) return "YES";
}
return "NO";
}
public static void Main(string[] args)
{
int x = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
int[,] a = new int[n, n];
for (int i = 0; i < n; i++)
{
string setir = Console.ReadLine();
var massiv = setir.Split(' ');
for (int j = 0; j < n; j++) a[i, j] = int.Parse(massiv[j]);
}
for (int j = 0; j < n; j++) Console.WriteLine(Yo(a, j, x));
}