1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <bits/stdc++.h>
using namespace std;

int main() {
	string pierwsze, drugie, wynik;int licznik = 0;
	cin>>pierwsze >> drugie >>wynik;
	vector<int>Pierwszy(0);
	vector<int>Drugi(0);
	vector<int>Trzeci(0);
	bool pop = false;
	for (char znak:pierwsze){
		Pierwszy.push_back(znak-'0');
	}
	for (char znak:drugie){
		Drugi.push_back(znak-'0');
	}
	for (char znak:wynik){
		Trzeci.push_back(znak-'0');
	}
	int przechodny = 0;
	for (int i =Drugi.size()-1; i>= 0; i--){
		if ((Pierwszy[i]+Drugi[i])%10 == Trzeci[i]){
			//licznik++;
			//cout << "Pierwszy warunek (OK): "<< Pierwszy[i] << ' ' << Drugi[i]<<' '<<i<<endl;
			//if (Pierwszy[i]+Drugi[i]+przechodny>=10){
			//przechodny = 1;
			//cout << "tu git" << Pierwszy[i] << ' '<< Drugi[i] << endl;
			przechodny = 0;
			for (int j = i; j >=0; j--){
				//cout << "hello " << Pierwszy[j] << ' ' << Drugi[j]  << '\n';
				
				if ((Pierwszy[j]+Drugi[j]+przechodny < 10)&&(Pierwszy[j]+Drugi[j]+przechodny)%10 == Trzeci[j]){
					licznik++;
					//cout << "Drugi warunek (OK): "<< Pierwszy[j] << ' ' << Drugi[j]<<' '<< przechodny<<" dodałem "<<j<<endl;
				}
				if ((Pierwszy[j]+Drugi[j]+przechodny)%10 == Trzeci[j]){
					pop = true;
					if (Pierwszy[j]+Drugi[j]+przechodny >= 10){
						przechodny = 1;
					}else{
						przechodny = 0;
					}
				}else{
					pop = false;
					//licznik--;
					//cout << "OK koniec...\n";
					break;
				}
			}
			//}
		}
		//cout << Pierwszy[i] << ' ' << Drugi[i] << endl;
		przechodny = 0;
	}
	cout << licznik;
	return 0;
}