1. Състезания по програмиране


Правила за провеждане на състезания по програмиране:

Стандартен вход и изход в С и С++

1. Стандартен вход за езика C

scanf("<форматиращ спецификатор>",<адрес на променлива>);

Пример:
int ik; 
unsigned uk;
long lk;
unsigned long ulk;
double dk;
scanf("%d %u %ld %lu %lf", &ik, &uk, &lk, &ulk, &dk);

2. Стандартен изход за езика C

printf("<форматиращ спецификатор>",<променлива>);

Пример:

int ik = -10;
unsigned uk = 10;
long lk = -1000000;
unsigned long ulk = 1000000; // 16 битов цял тип данниdouble dk = 2.52;
printf("%d %u %ld %lu %lf\n", ik, uk,lk, ulk, dk);

3. Стандартен вход за езика C++

cin >> <име на променлива>;

Пример:

int k;
cin >> k;

4. Стандартен изход за езика C++

cout << <име на променлива>;

Пример:

int ik = -10;
unsigned int uk = 10;
long lk = -1000000;
unsigned long ulk = 1000000; // 16 битов цял тип данни
double dk = 2.52;
cout << ik << " " <<uk << " " << lk << " "
     << ulk<< " " << dk << "\n";

Пренасочване на входа и изхода

Пренасочване на стандартни вход и изход със средствата на ОС - DOS и всяка Unix-like операционна система.

Файл с програма на C или C++ със стандартни вход и изход: prog.exe
Текстов файл с входните данни за програмата: test1.inp
Изпълнение на програмата: prog <test1.inp >test1.out
Текстов файл, произведен от програмата при това изпълнение: test1.out

Задача . Сума на цифри

Дадено е цяло положително число, което е по-малко от 10100.  Напишете програма 1a.exe, която пресмята сумата на цифрите на числото.

На стандартния вход се четат цели положителни числа (не повече от 1010), по едно на ред, до достигане на край на файла. На стандартния изход се извеждат търсените суми, по една на ред.

Примерен вход

123
999

Изход - решение с данни от примерния вход

6
27

Задача . Еквивалентни думи

    Дума наричаме поредица от малки латински букви. Две думи ще наричаме еквивалентни, ако всяка буква, която се среща във втората дума се среща поне веднъж и в първата дума и обратно. Например hello и hole са еквивалентни думи, а hello и hell не са. Всяко множество от думи може да се раздели на класове на еквивалентност (непресичащи се подмножества), като всеки две думи от даден клас са еквивалентни, а всеки две думи различни класове не са еквивалевнтни. Напишете програма 1b.exe, която разделя дадено множество от думи на класове на еквивалентност.

    Стандартен вход
    На входа се задава броят на думите в множеството (не повече от 104), след което следват самите думи (не по-дълги от 80 букви), като всяка дума е на нов ред. Думите са написани само с малки латински букви.

    Стандартен изход
    На изхода се отпечатва едно число - броят на класовете на еквивалентност в даденото множество.

Пример:
5
hello
goodbye
hole
byebye
bey
Решение на примера:
3