#include <iostream>
using namespace std;
bool check(const int &n)
{
bool b = true;
int ch = n;
int de = n % 10;
while (ch > 0 && b) {
if (de == 0) {
b = false;
}
else if (n % de != 0) {
b = false;
} else {
ch /= 10;
de %= 10;
}
}
return b;
}
int main()
{
int a, b, k = 0;
cin >> a >> b;
for (int i = a; i < b; ++i) {
if (check(i)) {
cout << i << " ";
++k;
}
}
if (k == 0) {
cout << "-" << endl;
}
return 0;
}
запишем условие: N=64, K=20, I=?
решение: найдем вес одного символа: 64=2^i, i=6 бит
I=K*i=20*6=120 бит
Пример реализации при помощи функции "поиск решения" в Excel
Var a:array[1..100] of integer;
i,s:integer;
begin
for i:=1 to 8 do begin
a[i]:=random(11)-0;
write(a[i]:4);
end;
s:=0;
for i:=1 to 8 do begin
if a[i] mod 2<>0 then
s:=s+1;
end;
writeln;
writeln(s);
end.
Ответ:
Решение задачи - в прилагаемом файле.