http://acm.hdu.edu.cn/showproblem.php?pid=4403
数值不大,暴力枚举,枚举每一种划分,然后枚举每一种等号位置。
#include<iostream> #include<string> #include<cstring> using namespace std; string str; int len; int main() { while(cin >> str && str != "END") { len = str.size(); int counts = 1,ans = 0; for(int i = 1;i < len;i++) counts *= 2; for(int i = 1;i < counts;i++) { int a[20] = {0}; int now = 0,temp = i,num = 1; while(now < len) { a[num] = a[num]*10+str[now]-'0'; if(temp%2) num++; temp /= 2; now++; } for(int j = 1;j < num;j++) { int k,left = 0,right = 0; for(k = 1;k <= j;k++) left += a[k]; for(;k <= num;k++) right += a[k]; if(left == right) ans++; } } cout << ans << endl; } return 0; }