#ifdef _MSC_VER
#ifndef __GNUC__
#pragma warning(disable: 4996)
#endif
#define main main0
#endif
#include <iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int n;
ll wynik = 0;
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
n = s1.length();
for(int i = 0; i < n; ++i) {
s1[i] -= '0';
s2[i] -= '0';
s3[i] -= '0';
}
for(int i = n - 1; i >= 0; --i) {
if((s1[i] + s2[i]) % 10 != s3[i])
continue;
int przeniesien = 0;
int przeniesienie = 0;
int j = i;
for(; i >= 0 && (s1[i] + s2[i] + przeniesienie) % 10 == s3[i]; ) {
if(s1[i] + s2[i] > s3[i]) {
++przeniesien;
przeniesienie = 1;
} else
przeniesienie = 0;
--i;
}
wynik += (ll)(j - i - przeniesien) * (j - i - przeniesien + 1) / 2;
i += 1;
}
cout << wynik << endl;
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 | #ifdef _MSC_VER #ifndef __GNUC__ #pragma warning(disable: 4996) #endif #define main main0 #endif #include <iostream> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef unsigned int uint; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n; ll wynik = 0; string s1, s2, s3; cin >> s1 >> s2 >> s3; n = s1.length(); for(int i = 0; i < n; ++i) { s1[i] -= '0'; s2[i] -= '0'; s3[i] -= '0'; } for(int i = n - 1; i >= 0; --i) { if((s1[i] + s2[i]) % 10 != s3[i]) continue; int przeniesien = 0; int przeniesienie = 0; int j = i; for(; i >= 0 && (s1[i] + s2[i] + przeniesienie) % 10 == s3[i]; ) { if(s1[i] + s2[i] > s3[i]) { ++przeniesien; przeniesienie = 1; } else przeniesienie = 0; --i; } wynik += (ll)(j - i - przeniesien) * (j - i - przeniesien + 1) / 2; i += 1; } cout << wynik << endl; return 0; } |
English