题意:http://blog.youkuaiyun.com/magicnumber/article/details/6192242
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
using namespace std;
string str;
int dir[8][2] = {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};
struct node
{
int x, y;
}s, e;
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif // ONLINE_JUDGE
while(cin >> str)
{
int len = str.size();
__int64 sum = 0, on = 0;
s.x = s.y = 0;
for(int i = 0; i < len; i++)
{
int a = str[i] - '0';
e.x = s.x + dir[a][0], e.y = s.y + dir[a][1];
sum += s.x*e.y - e.x*s.y;
s = e;
}
if(sum < 0) sum = -sum;
__int64 in = (sum-len)/2+1 + len;
printf("%I64d\n", in);
}
}