1. #include <iostream>
2. using namespace std;
3. int main()
{
4. int password;
5. cin >> password;
6. if (password<100000 || password>999999)
7. cout << "Password is incorrect\n";
8. else
{
9. if (password%39!=0 || password%71!=0)
10. cout << "Password is incorrect\n";
11. else
{
12. if (password/100000+(password/1000)%10+(password/10)%10!=21 || (password/10000)%10+(password/100)%10+password%10!=21)
13. cout << "Password is incorrect\n";
14. else
{
15. cout << "Password is correct\n";
16. }
}
}
}
Способ 1 - перебор
Написать программу перебора всех комбинаций паролей и поиск по условиям:
1) Из условия (6) следует вывод, что пароль - число в диапазоне от 100000 до 999999 включительно.
2) Условие (9) показывает, что пароль должен делиться нацело на 39 и 71.
3) Условие (12) проверяет, что сумма 1й, 3й и 5й цифр пароля и сумма 2й, 4й, 6й цифр пароля должны равняться 21.
4) После прохождения всех проверок вывести число на экран.
Примерный код перебора всех возможных комбинаций приведен в листинге.
Листинг 1. Перебор паролей
#include <iostream>
using namespace std;
int main()
{
for (int i=100000; i<=999999; i++)
{
if (i%39==0 && i%71==0)
{
int summ1=i/100000+(i/1000)%10+(i/10)%10;
int summ2=(i/10000)%10+(i/100)%10+i%10;
if (summ1==summ2 && summ1==21)
{
cout<<i<<endl;
}
}
}
}
Таких комбинаций всего одна – 974688.
Способ 2 -подбор
Подобрать пароль вручную. Условия на пароль:
1) 6-значная комбинация, состоящая из цифр,
2) пароль должен быть кратным 39 и 71,
3) сумма цифр на нечетных позициях должна равняться сумме цифр на четных позициях и быть равной 21.
Таких комбинаций всего одна – 974688.