#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int D=0;
int n;
long long wynik=0;
//cin>>n;
string sa,sb,sc;
cin>>sa>>sb>>sc;
n = sa.size();
int w[n];
int w2[n];
int samotnie = 1;
int zPrawej = 2;
int a,b,c,pom,tmp,przejscie,czyOk;
if (D){
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
przejscie=0;
czyOk=1;
for (int x=j;x>=i;x--){
a = sa[x]-'0';
b = sb[x]-'0';
c = sc[x]-'0';
tmp = a+b+przejscie;
if (tmp%10==c){
if(tmp>9) przejscie=1; else przejscie=0;
} else {
czyOk=0;
break;
}
}
if (czyOk==1 && przejscie==0){
wynik = wynik + 1;
if (D) cout<<i+1<<" "<<j+1<<" "<<przejscie<<endl;
}
}
}
}
long long wynik3=0;
int ccnt=0;
przejscie=0;
for(int i=n-1;i>-1;i--){
w[i]=0;
a = sa[i]-'0';
b = sb[i]-'0';
c = sc[i]-'0';
tmp = a+b+przejscie;
if (tmp%10==c ) {
if(przejscie) w[i]=w[i]+4;
if(tmp>9) {
w[i]+=2;
przejscie=1;
} else {
w[i]+=1;
przejscie=0;
}
} else if ((tmp-przejscie)%10==c){
if(tmp-przejscie>9) {
w[i]+=2;
przejscie=1;
} else {
w[i]+=1;
przejscie=0;
}
} else {
przejscie=0;
w[i]=0;
}
}
int je=0;
long long wynik2=0;
int prev=0;
int cnt = 0;
int OK2=0;
for(int i=0;i<n;i++){
if (D) if (w[i]==2) {cout<<"OK "<<OK2<<" "<<prev<<endl;}
if(w[i]==0 || (w[i]==2 && !(OK2==1 || prev==5))){
if (je>0) {wynik2 = wynik2 + je; if (D) cout<<i<<" A zwiekszam o "<<je<<endl;}
je = 0;
cnt = 0;
OK2=0;
} else {
if (w[i]==6 && prev!=6 && prev==5) OK2=1;
if (w[i]==1){
cnt= cnt+1;
je=je+cnt; if(D) cout<<i<<" Aje = "<<je<<endl;
} else {
if (w[i]==2 && (OK2==1 || prev==5)){
cnt = cnt+1;
je=je+cnt; if(D) cout<<i<<" Bje = "<<je<<endl;
OK2=0;
}
}
}
prev = w[i];
}
if (je>0){ wynik2 = wynik2 + je;if (D) cout<<n<<" E zwiekszam o "<<je<<endl;}
cout<<wynik2<<endl;
if (D){
cout<<sa<<endl<<sb<<endl<<sc<<endl;
for (int i=0;i<n;i++){
cout<<w[i];
}
cout<<endl;
}
if (D) cout<<wynik;
return 0;
}
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int D=0; int n; long long wynik=0; //cin>>n; string sa,sb,sc; cin>>sa>>sb>>sc; n = sa.size(); int w[n]; int w2[n]; int samotnie = 1; int zPrawej = 2; int a,b,c,pom,tmp,przejscie,czyOk; if (D){ for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ przejscie=0; czyOk=1; for (int x=j;x>=i;x--){ a = sa[x]-'0'; b = sb[x]-'0'; c = sc[x]-'0'; tmp = a+b+przejscie; if (tmp%10==c){ if(tmp>9) przejscie=1; else przejscie=0; } else { czyOk=0; break; } } if (czyOk==1 && przejscie==0){ wynik = wynik + 1; if (D) cout<<i+1<<" "<<j+1<<" "<<przejscie<<endl; } } } } long long wynik3=0; int ccnt=0; przejscie=0; for(int i=n-1;i>-1;i--){ w[i]=0; a = sa[i]-'0'; b = sb[i]-'0'; c = sc[i]-'0'; tmp = a+b+przejscie; if (tmp%10==c ) { if(przejscie) w[i]=w[i]+4; if(tmp>9) { w[i]+=2; przejscie=1; } else { w[i]+=1; przejscie=0; } } else if ((tmp-przejscie)%10==c){ if(tmp-przejscie>9) { w[i]+=2; przejscie=1; } else { w[i]+=1; przejscie=0; } } else { przejscie=0; w[i]=0; } } int je=0; long long wynik2=0; int prev=0; int cnt = 0; int OK2=0; for(int i=0;i<n;i++){ if (D) if (w[i]==2) {cout<<"OK "<<OK2<<" "<<prev<<endl;} if(w[i]==0 || (w[i]==2 && !(OK2==1 || prev==5))){ if (je>0) {wynik2 = wynik2 + je; if (D) cout<<i<<" A zwiekszam o "<<je<<endl;} je = 0; cnt = 0; OK2=0; } else { if (w[i]==6 && prev!=6 && prev==5) OK2=1; if (w[i]==1){ cnt= cnt+1; je=je+cnt; if(D) cout<<i<<" Aje = "<<je<<endl; } else { if (w[i]==2 && (OK2==1 || prev==5)){ cnt = cnt+1; je=je+cnt; if(D) cout<<i<<" Bje = "<<je<<endl; OK2=0; } } } prev = w[i]; } if (je>0){ wynik2 = wynik2 + je;if (D) cout<<n<<" E zwiekszam o "<<je<<endl;} cout<<wynik2<<endl; if (D){ cout<<sa<<endl<<sb<<endl<<sc<<endl; for (int i=0;i<n;i++){ cout<<w[i]; } cout<<endl; } if (D) cout<<wynik; return 0; } |
English