я просто ищу все простые числа в диапазоне от 1 до n с решето эратосфена, а далее просто сравниваю вектор с простыми числами.
мой пример решения:#include
#include
using namespace std;
int main()
{
int n;
cin > > n;
vector prime (n+1, true);
prime[0] = prime[1] = false;
for (int i=2; i*i< =n; ++i)
if (prime[i])
for (int j=2; j< =n/i; j++)
if (prime[i*j]) prime[i*j] = false;
for(int i = 0; i < prime.size(); ++i)
{
for(int j = i; j < prime.size(); ++j)
{
if(prime[i]& & prime[j])
if(i+j==n)
cout < < i < < " " < < j < < endl;
}
}
cin.get();
cin.get();
}
2000 Байтов.
Объяснение:
В алфавите 16 букв. Зная это информацию, мы можем воспользоватся формулой Хартли - N = 2^i, где N - мощность алфавита, а i - вес одного символа. 16 = 2^4. В задаче говорится, что все слова этого языка состоят из 5 букв. Выполнив обычные умножение, мы можем узнать вес одного слова в битах. 5 * 4 = 20 бит - вес одного слова. Далее просто вес одного слова умножим на их количество. 20 * 8000 = 160000. Нас просят выразить информацию в Байтах, поэтому получившееся число разделим на 8, т.к. в одном Байте восемь бит информации. 160000 : 8 = 20000 Байтов - вес всех слов, составленных из букв алфавита.