poj 1654 area

Source Code

Problem: 1654  User: billforum 
Memory: 948K  Time: 32MS 
Language: C++  Result: Accepted 

Source Code 
#include <iostream>
#include <memory.h>
#include <stdlib.h>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
char str[1000005];
int main()
{

   int xall[10]={0,-1,0,1,-1,0,1,-1,0,1};
   int yall[10]={0,-1,-1,-1,0,0,0,1,1,1};
   int t;
  scanf("%d",&t);
getchar();
  // cin>>t;
   while(t--)
   {
   gets(str);
   //scanf("%s",str);
   //printf("%d\n",strlen(str));
   int x1,y1,x2,y2;
   long long area=0;
   x1=0;
   y1=0;
   int len=strlen(str);
      for(int i=1;i<len;i++)
      {
          int j=str[i]-'0';
       x2=xall[str[i]-'0']+x1;
       y2=yall[str[i]-'0']+y1;
       int tmp=x1*y2-y1*x2;
       area+=tmp;
       x1=x2;
       y1=y2;
      }
    if(area<0) area=-area;
      if(area%2==0) printf("%lld\n",area/2);
      else  printf("%lld.5\n",area/2);

   }
    return 0;
}






 

posted @ 2012-02-20 15:24  wuzhibin  阅读(226)  评论(0)    收藏  举报