Pagini recente » Cod sursa (job #946258) | Cod sursa (job #1690994) | Cod sursa (job #2721317) | Cod sursa (job #2122587) | Cod sursa (job #1809998)
/**
Gigel este un mare pasionat al jocurilor de noroc, iar cel mai mult ii place sa joace la loto "6 din N". La acest joc, el poate scrie pe un bilet 6 numere, din N numere naturale
distincte date de Loteria Nationala; un numar poate fi folosit pe un bilet de mai multe ori. Gigel a visat intr-o noapte ca suma numerelor scrise pe biletul castigator va fi S,
asa ca a doua zi s-a dus sa puna si el un bilet castigator!
Cerinta
Scrieti un program care ii spune lui Gigel ce numere trebuie sa aleaga ca sa obtina un bilet castigator (cu suma S)
Date de Intrare
Pe prima linie din fisierul loto.in se vor gasi numerele naturale N si S, separate prin cate un spatiu. Pe a doua linie vor fi N numere naturale distincte, date de Loteria Nationala.
Date de Iesire
In fisierul loto.out se vor gasi 6 valori reprezentand numerele alese pentru biletul lui Gigel. Daca nu se poate obtine un bilet castigator in fisierul de iesire se va afla doar numarul -1.
Restrictii si precizari
1 <= N <= 100
1 <= S <= 600.000.000
Valorile numerelor date de Loteria Nationala nu vor depasi 100.000.000
Daca exista mai multe solutii, se va afisa una singura
*/
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int N,S,V[101],X[101],F;
void Citire()
{
fin>>N>>S;
for(int i=1;i<=N;i++)
fin>>V[i];
}
void Print()
{
for(int i=1;i<=6;i++)
fout<<V[X[i]]<<' ';
fout<<endl;
}
void Compare()
{
int s=0;
for(int i=1;i<=6;i++)
{
s += V[X[i]];
}
if (s == S)
{
F = 1;
Print();
}
}
void Rezolvare(int k)
{
if (F == 1)
return;
for(int i=1;i<=N;i++)
{
X[k] = i;
if (k == 6)
{
Compare();
if (F == 1)
return;
}
else
{
Rezolvare(k+1);
}
}
}
int main()
{
Citire();
Rezolvare(1);
if (F == 0)
fout<<-1;
return 0;
}