HDU-4403 A very hard Aoshu problem 열거
7165 단어 HDU
코드는 다음과 같습니다.
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<cstring>
#include<vector>
#include<string>
#define LL long long
using namespace std;
char s[20];
int len;
map<long long,int>fmp, tmp;
long long get(int x, int y) {
long long ret = 0;
for (int i = x; i <= y; ++i) {
ret = ret * 10 + s[i] - '0';
}
return ret;
}
void cal(int a, int b, map<long long,int>&mp) {
if (a == b) {
++mp[s[a]-'0'];
return;
}
int mask = 1 << (b-a), last;
for (int i = 0; i < mask; ++i) {
long long temp = 0;
last = a;
for (int j = 0; j < (b-a); ++j) {
if (i & (1 << j)) {
temp += get(last, a + j);
last = a + j + 1;
}
}
temp += get(last, b);
++mp[temp];
}
}
long long solve(int x) {
long long ret = 0;
fmp.clear(), tmp.clear();
map<long long, int>::iterator it;
cal(0, x, fmp);
cal(x+1, len-1, tmp);
for (it = fmp.begin(); it != fmp.end(); ++it) {
ret += (long long)(it->second) * (long long)tmp[it->first];
}
return ret;
}
int main( )
{
long long ret;
while (scanf("%s", s), s[0] != 'E') {
ret = 0;
len = strlen(s);
for (int i = 0; i <= len-2; ++i) {
//
ret += solve(i);
}
printf("%I64d
", ret);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.