【HDOJ】4403 A very hard Aoshu problem

时间:2023-03-09 02:21:33
【HDOJ】4403 A very hard Aoshu problem

HASH+暴力。

 /* 4403 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
using namespace std; #define MAXN 55 map<int, int> tb[];
char s[MAXN]; int get(int b, int e) {
int ret = ; for (int i=b; i<e; ++i)
ret = *ret + s[i] - ''; return ret;
} void myfill(int b, int e, int v, int in) {
int tmp = ; if (b == e)
tb[in][v]++; for (int i=b; i<e; ++i) {
tmp = * tmp + s[i] - '';
myfill(i+, e, v+tmp, in);
}
} int main() {
int len;
int i, j, k, tmp;
int x, y;
int ans; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%s", s)!=EOF && s[]!='E') {
len = strlen(s);
ans = ;
for (i=; i<len; ++i) {
tb[].clear();
tb[].clear();
myfill(, i, , );
myfill(i, len, , );
for (map<int, int>::iterator iter=tb[].begin(); iter!=tb[].end(); iter++)
ans += iter->second * tb[][iter->first];
}
printf("%d\n", ans);
} return ;
}