Program, zrozumienie

0

Mam do napisania program, sprawdzający czy spośród 4 podanych przeze mnie cyfr, znajdziemy taki podzbiór, by suma tych cyfr wyniosła "0". Znalazłem taki oto kod z rozwiązaniem, lecz nie do końca rozumiem jego działanie. Mógłby ktoś tak ogólnie wytłumaczyć idee?

#include <bits/stdc++.h>
#define int long long
using namespace std;
main()
{
    int t;
    cin >> t;
    while (t--) {
        int A[4];
        for (int i = 0; i < 4; i++)
            cin >> A[i];
        int tot = 1 << 4;
        int sum = 0;
        bool flag = 0;
        for (int mask = 1; mask < tot; mask++) {
            for (int i = 0; i < 4; i++) {
                int x = 1 << i;
                if (mask & x)
                    sum += A[i];
            }
            if (sum == 0)
                flag = 1;
            sum = 0;
        }

        if (flag)
            cout << "Yes" << endl;
        else
            cout << "No" << endl;
    }
}
0

Ten kod nie ma NIC wspólnego z twoim zadaniem.
Skąd przekonanie, że to jest rozwiązanie?

0

Sorry, to miał być ten kod, pochodzi to z CodeChef i zostało zaakceptowane.

#include <bits/stdc++.h>
using namespace std;
typedef long long int lld;

int main() {
	lld t;
	cin>>t;
	while(t--)
	{
	    lld a[4];
	    cin>>a[0]>>a[1]>>a[2]>>a[3];
	    lld tot=1<<4,flag=0; 
	    for (lld i=1;i<tot;i++)
	    {
	        int temp=0;
	        for (lld j=0;j<4;j++)
	        {
	            lld f=1<<j;
	          if (f&i)temp+=a[j];
	        }
	        if (temp==0)
	        {
	            flag=1;
	            break;
	        }
	    }
	    if (flag==0)cout<<"No"<<endl;
	    else cout<<"Yes"<<endl;
	}
	return 0;
}
0

myślę że też nie :)
napisałbyś szybciej niż ta zabawa w ciuciubabkę

Skądinąd oba są patologiczne

0

To pochodzi ze strony CodeChef, kod został zaakceptowany, więc myślałem, że jest prawidłowy.

1
xyz91i napisał(a):

To pochodzi ze strony CodeChef, kod został zaakceptowany, więc myślałem, że jest prawidłowy.

Czyli dobra odpowiedź, nieważne jakie było pytanie ;)
Nie uważasz, ze to kabaretowe?

0

Czyli jak mam rozumieć ten kod? Co zostało tu robione?

0
xyz91i napisał(a):

To pochodzi ze strony CodeChef, kod został zaakceptowany, więc myślałem, że jest prawidłowy.

Nie wiem co to CodeChef ale np. na CodeForces ludzie pisza tak paskudny, nieczytelny kod na tych contestach ze to jakas porazka :D
No ale w sumie dziala, kto by sie przejmowal ze sa jakies zmienne pokroju "x, z" nie? :P

1

A ja mam problem z treścią zadania:

xyz91i napisał(a):

sprawdzający czy spośród 4 podanych przeze mnie cyfr, znajdziemy taki podzbiór, by suma tych cyfr wyniosła "0".

Cyfra to liczba od 0 do 9. Suma n nieujemnych liczb jest równa zero, jeśli wszystkie n liczb są równe zero. Jedna cyfra to jakby nie patrzeć podzbiór czteroelementowego zbioru cyfr. Czy program powinien sprawdzać czy którakolwiek z cyfr jest zerem?

Czy może czegoś nie zrozumiałem?

1

Pierwsza linijka i od razu taka brzydka rzecz...

#include <bits/stdc++.h>

Nie używaj nagłówków z katalogu bits jeśli nie masz w tym konkretnego celu. Tam mogą być rzeczy wychodzące poza standard i działać inaczej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1