#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define s second
#define f first
const int N=1e6+4;
vector <int> lacz;
int T[N][2];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string pie, dru, kon;
int sum=0, last=0;
bool otw=0;
cin >> pie >> dru >> kon;
// cerr << pie.size() << '\n';
for( int i=pie.size()-1; i >= 0; --i ){
T[i][0] = (kon[i]-pie[i]-dru[i]+48+100)%10;
if( T[i][0] > 1 ){
T[i][0]=2;
T[i][1]=4;
}
else
T[i][1] = (pie[i]+dru[i]+T[i][0]-48-48)/10;
// cerr << i << ' ' << T[i][0] << ' ' << T[i][1] << '\n';
}
for( int i=pie.size()-1; i>=0; --i ){
if( T[i][0] != T[i+1][1] && otw ){
lacz.push_back( sum );
// cerr << "INNE " << i << '\n';
sum=0;
otw=0;
}
if( T[i][0] == 0 && !otw ){
sum=0;
otw=1;
}
if( T[i][1] == 0 ){
sum++;
}
// cerr << i << ' ' << sum << ' ' << otw << '\n';
}
if( otw )
lacz.push_back(sum);
ll odp=0;
for( int i:lacz ){
ll dod = i;
odp += (dod*(dod+1))/2;
// cerr << "JEST " << i << '\n';
}
cout << odp ;
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 | #include <bits/stdc++.h> using namespace std; #define ll long long #define s second #define f first const int N=1e6+4; vector <int> lacz; int T[N][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string pie, dru, kon; int sum=0, last=0; bool otw=0; cin >> pie >> dru >> kon; // cerr << pie.size() << '\n'; for( int i=pie.size()-1; i >= 0; --i ){ T[i][0] = (kon[i]-pie[i]-dru[i]+48+100)%10; if( T[i][0] > 1 ){ T[i][0]=2; T[i][1]=4; } else T[i][1] = (pie[i]+dru[i]+T[i][0]-48-48)/10; // cerr << i << ' ' << T[i][0] << ' ' << T[i][1] << '\n'; } for( int i=pie.size()-1; i>=0; --i ){ if( T[i][0] != T[i+1][1] && otw ){ lacz.push_back( sum ); // cerr << "INNE " << i << '\n'; sum=0; otw=0; } if( T[i][0] == 0 && !otw ){ sum=0; otw=1; } if( T[i][1] == 0 ){ sum++; } // cerr << i << ' ' << sum << ' ' << otw << '\n'; } if( otw ) lacz.push_back(sum); ll odp=0; for( int i:lacz ){ ll dod = i; odp += (dod*(dod+1))/2; // cerr << "JEST " << i << '\n'; } cout << odp ; return 0; } |
English