Для начинающих на С. Составители
Скачать 1.31 Mb.
|
Задача 89 (№ 315) Наименьшая система счисления (Сл.: 26%)Известно, что основанием позиционной системы счисления называют количество различных символов, используемых для записи чисел в данной системе счисления. Также известно, что любое число x в b-ичной системе счисления имеет вид x=a0∙b0+a1∙b1+…+an∙bn, где b ≥ 2 и 0 ≤ ai < b. Для записи чисел в b-ичной системе счисления, где b ≤ 36, могут быть использованы первые b символов из следующего списка 0,1,…, 9, A, B, …, Z. Например, для записи чисел в троичной системы используются символы 0, 1, 2, а в двенадцатеричной - 0,1,…, 9, A, B.
Входные данные. Входной файл содержит входную строку. Длина строки не превышает 255. Все символы имеют коды от 32 до 127. Выходные данные. Выходной файл должен содержать одно число. Если строка является записью числа в некоторой системе счисления, то нужно вывести минимальное основание такой системы счисления. Иначе вывести -1.
Задача 90 (№ 277) Школьная алгебра (Сложность: 27%)Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений: коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице; член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0); знак "+" опускается, если он предшествует отрицательному коэффициенту; знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс); знак умножения между коэффициентом и переменной опускается.
Входные данныеВо входном файле через пробел записаны целые коэффициенты a, b и с, каждое из которых не превосходит 30000 по абсолютной величине. Выходные данныеВыходной файл OUTPUT.TXT должен содержать трехчлен, записанный с использованием алгебраических соглашений. #include using namespace std; int main() { int a,b,c; cin>>a>>b>>c; if(a!=0) cout< if(b>1 && a!=0)cout<<"+"< if(b>1 && a==0)cout< if(b==1 && a!=0)cout<<"+x"; if(b==1 && a==0)cout<<"x"; if(b<-1)cout< if(b==-1)cout<<"-x"; if(c>1) { if(b==0 && a==0)cout< if(b!=0 || a!=0)cout<<"+"< if(b==0 && a==0)cout<<"y"; if(b!=0 || a!=0)cout<<"+y"; } if(c<-1)cout< if(c==-1)cout<<"-y"; if(a==0 && b==0 && c==0)cout<<0; } ШахматыЗадача 91 (№ 935) Шахматное поле (Сложность: 16%)На стандартной шахматной доске 8х8 заданы координаты двух клеток. Требуется определить: имеют ли данные клетки одинаковый цвет?
Выходные данные. В выходной файл OUTPUT.TXT выведите YES, если поля одного цвета, или слово NO в противном случае. #include using namespace std; int main(){ int x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; if((x1+y1+x2+y2)%2==0) cout<<"YES"; else cout<<"NO"; return 0; } Задача 92 (№ 798) Шахматная доска – 2. (Сложность: 18%)Аня разделила доску размера m × n на клетки размера 1×1 и раскрасила их в черный и белый цвет в шахматном порядке. Васю заинтересовал вопрос: клеток какого ц вета получилось больше – черного или белого. Для того чтобы выяснить это, он спросил у Ани, в какой цвет она раскрасила j-ю клетку в i-м ряду доски. По этой информации Вася попытался определить, клеток какого цвета на доске больше. Требуется написать программу, которая по размерам доски и цвету j-й клетки в i-м ряду определит, клеток какого цвета на доске больше — черного или белого.
Выходные данные. В выходной файл OUTPUT.TXT выведите одно из трех слов: black, если черных клеток на доске больше, white, если белых клеток на доске больше, equal, если черных и белых клеток на доске поровну. #include using namespace std; int main(){ int m,n,j,i,c; cin>>m>>n>>j>>i>>c; if (m%2==0||n%2==0){cout<<"equal"; return 0; } if (c==0){if ((j+i)%2==0) cout<<"black"; else cout<<"white"; } if (c==1){if ((j+i)%2!=0) cout<<"black"; else cout<<"white"; } return 0; } Задача 93 (№ 763) Игра с ладьей (Сложность: 19%)На бесконечной вправо и вверх шахматной доске находится ладья. Два игрока передвигают ее по очереди. За один ход разрешено сдвинуть ладью вниз или влево на произвольное (ненулевое) количество клеток так, чтобы ладья не покинула доску. Цель игры – переместить ладью в левый нижний угол, то есть клетку с координатами (1,1). Известно, что оба игрока придерживаются оптимальной стратегии. Игрок №1 ходит первым, при этом он обязан совершить хотя бы один ход. Если первый ход сделать нельзя, то определить победителя также невозможно. Требуется написать программу, которая найдет номер победившего игрока, либо определит, что этого сделать нельзя.
Выходные данные. В выходной файл OUTPUT.TXT выведите одно число – номер победившего игрока. Если победителя определить невозможно, то следует вывести 0. #include using namespace std; int main(){ int x,y; cin>>x>>y; if(x==1 && y==1){cout<<"0"; return 0;} if (x==1 || y==1) cout<<"1"; else if(x!=y) cout<<"1"; else cout<<"2"; return 0;} Задача 94 (№791) Соседние клетки. (Сложность: 22%)
Входные данные. Входной файл INPUT.TXT содержит одно целое число от 1 до 64.Выходные данные. В выходной файл выведите через пробел в порядке возрастания номера всех клеток, имеющих с заданной общую сторону.#include using namespace std; int main(){ int cell,a; cin>>cell; a=cell-8; if(a>0) cout< a=cell-1; if(a>0 && a%8!=0) cout< a=cell+1; if(a<65 && cell%8!=0) cout< a=cell+8; if(a<65) cout< return 0; } Задача 95 (№ 416) Шахматный конь (Сложность: 25%) Вася решил научиться играть в шахматы. Он нашел книгу с записями партий и внимательно их изучает. Может быть, когда-нибудь Вася станет великим шахматистом, но пока он еще учится в начальной школе, и ему нелегко дается шахматная нотация. Больше всего трудностей у Васи вызывают ходы шахматного коня. Он попросил вас написать программу, которая сможет сообщить Васе, на какие клетки можно пойти конем с заданной клетки.
Входные данные. Во входном файле записано 2 символа – координаты клетки, где стоит конь.Выходные данные. В выходной файл в произвольном порядке выведите все координаты клеток, на которые за один ход может попасть конь, находящийся на заданной клетке.Нужно проверять, чтобы конь не уходил с доски.
#include # include using namespace std; int main (){ char n, x; string d; cin>>n>>x; x=x-48; // переводим символ в число d="_abcdefgh"; for (int i = 1; i <= 8; i++ ) { if (n==d[i]) { i - номер буквы в строке d:='_abcdefgh' В строке нумерация идет с 0, поэтому для удобства дописываем любой знак в начале строки if (i!=8 && x>2) cout< if (i<7 && x>1) cout< if (i<7 && x!=8) cout< if (i!=8 && x<7) cout< if (i!=1 && x<7) cout< if (i>2 && x!=8) cout< if (i>2 && x!=1) cout< if (i!=1 && x>2) cout< } } return 0;}7>7> |