Se citeşte un număr întreg pozitiv n. Folosind operatori pe biţi să se afişeze reprezentarea în baza 2 a numărului n.
#include<stdio.h>
#define MAX 64
int main() {
int n;
int abin[MAX];
int alen = 0;
puts("Introduceti un numar intreg n");
scanf("%d", &n);
printf("n = %d\n", n);
do {
abin[alen++] = n % 2;
n /= 2;
}
while(n);
printf("bin = ");
for(int i = alen-1; i >=0; i--) {
printf("%d", abin[i]);
}
printf("\n");
return 0;
}
Se citeşte un număr întreg n reprezentând numărul de elemente dintr-o mulţime şi un şir de n valori întregi reprezentând elementele acestei mulţimi. Folosind operatori pe biţi să se afişeze toate submulţimile mulţimii date.
#include<stdio.h>
#define MAX 64
int main() {
int n;
int arr[MAX];
unsigned long long lset = 0;
unsigned long long i;
puts("Introduceti un numar intreg n");
scanf("%d", &n);
printf("n = %d\n", n);
printf("Introduceti un sir separat cu spatii de %d elemente:", n);
for (i = 0; i < n; i++, lset++) {
scanf("%d", &arr[i]);
lset <<= 1;
}
printf("lset = %llu\n", lset);
for (i = 1; i <= lset; i++ ) {
unsigned long long ull = i;
printf("%d = ", i);
int rot = 0;
do {
if (ull % 2 == 1) {
printf("%d ", arr[rot]);
}
ull >>= 1;
rot++;
}
while(ull > 0);
printf("\n");
}
return 0;
}
Temă: Se citeşte un număr întreg n reprezentând numărul de elemente dintr-o mulţime şi un şir de n valori întregi reprezentând elementele acestei mulţimi. Se citeşte nu număr întreg k<n. Se se afişeze toate submulţimile de k elemente ale mulţimii date.
#include<stdio.h>
#define MAX 64
int main() {
int n, k;
int arr[MAX];
int set[MAX];
unsigned long long lset = 0;
unsigned long long i;
puts("Introduceti un numar de elemente din multume n");
scanf("%d", &n);
printf("n = %d\n", n);
puts("Introduceti marimea partitiei k < n");
scanf("%d", &k);
printf("k = %d\n", k);
printf("Introduceti un sir separat cu spatii de %d elemente:", n);
for (i = 0; i < n; i++, lset++) {
scanf("%d", &arr[i]);
lset <<= 1;
}
printf("lset = %llu\n", lset);
for (i = 1; i <= lset; i++ ) {
unsigned long long ull = i;
int rot = 0;
int nset = 0;
do {
if (ull % 2 == 1) {
set[nset++] = arr[rot];
}
ull >>= 1;
rot++;
}
while(ull > 0);
if (nset == k){
printf("{");
for(int j = 0; k < nset; j++) {
printf("%d ", set[j]);
}
printf("}\n");
}
}
return 0;
}