求面积, 注意用 long long, 而用double不行,还有就是最后求出的面积(即sum/2)乘以2 将面积看成 多个 一半的小正方形,
如果是奇数就面积(sum/2)+0.5 偶数就直接输出
#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
using namespace std;
string str;
int x, y, flag;
void Ijs(int i)
{
if(i == 5) flag = 1;
else if(i == 8) y += 1;
else if(i == 2) y -= 1;
else if(i == 6) x += 1;
else if(i == 4) x -= 1;
else if(i == 9) x += 1, y += 1;
else if(i == 7) x -= 1, y += 1;
else if(i == 3) x += 1, y -= 1;
else if(i == 1) x -= 1, y -= 1;
}
int main()
{
// #ifndef ONLINE_JUDGE
// freopen("in.txt","r",stdin);
// #endif // ONLINE_JUDGE
int t;
scanf("%d", &t);
while(t--)
{
flag = 0;
x = y = 0;
cin >> str;
if(str[0] == '5')
{
cout << 0 << endl;
continue;
}
int len = str.size();
long long sum = 0;
int kx, ky, a;
kx = 0, ky = 0;
for(int i = 0; i < len; i++)
{
a = str[i]-'0';
Ijs(a);
if(flag) break;
sum += kx*y-x*ky;
kx = x, ky = y;
}
if(sum<0) sum = -sum;
if(sum%2) printf("%I64d.5\n", sum/2);
else printf("%I64d\n", sum/2);
}
}