Podstawy programowania Tomasz Tyksiński
Wyższa Szkota Nauk Humanistycznych i Dziennikarstwa
1. Napisać funkcję void LosujP(int P[], int n) losującą permutację P rozmiaru n. Permutacja P jest zapisana w tablicy przykładowo dla n = 6, funkcja może wylosować następującą tablicę P = {5, 2, 1, 4, 0, 3}. Wykorzystaj funkcje obsługujące liczby pseudolosowe rand() oraz srand()
2. Napisać funkcję unsigned long long int PermutujBity(int P[], unsigned long long int n) permutującą bity 64 bitowej wartości n zgodnie z wylosowaną wcześniej 64 elementową permutacją P. Przykładowo dla 8 bitowej wartości n można uzyskać następujące przekształcenia
n 10011011 (bity numerowane od lewej 76543210)
P 24670135 (zapis permutacji oznacza przesuń 7 bit na 2 pozycję, 6 bit na 4,
5 bit na 6,1 bit na 3, 0 bit na 5 P(n) 01011110 (bity po przestawieniu pozycji zgodnie z P)
3. Napisać funkcję void Szachownica (int n) rysującą na ekranie szachownicę wymiaru nxn, przykładowo dla n = 6 funkcja powinna wypisać
4. Zmodyfikuj powyższą funkcję do postaci void Szachownica2(int n, int m) podobnie jak poprzednio rysującą szachownicę wymiaru nxn, ale dodatkowo każde pole szachownicy powinno być wymiaru m xm. Przykładowo Szachownica2(4, 2) wyrysuje
** ** ** **
** **
5. Napisz funkcję int Zaprzyjaznione(int n, int m) sprawdzającą czy dwie liczby n i m są liczbami zaprzyjaźnionymi, tzn. suma dzielników liczby n z wyłączeniem wartości n jest równa m i na odwrót. Funkcja zwraca 1 jeżeli liczby są zaprzyjaźnione, 0 jeżeli nie są zaprzyjaźnione. Przykładowo:
220 = 1 + 2 + 4 + 71 + 142 (suma dzielników wynosi 284)
284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 (suma dzielników wynosi 220)
6. Napisz program, który znajdzie i wypisze wszystkie możliwe pięciocyfrowe pary liczb zaprzyjaźnionych.
19