North North West |
Time Limit: 10000ms, Special Time Limit:25000ms, Memory Limit:65536KB |
Total submit users: 71, Accepted users: 59 |
Problem 13406 : No special judgement |
Problem description |
We can describe detailed direction by repeating the directional names: north, south, east and west. For example, northwest is the direction halfway between north and west, and northnorth- west is between north and northwest. In • “north” means 0 degrees. • “west” means 90 • If the direction dir means a degrees and the sum of the Your task is to calculate the angle in degrees |
Input |
The input contains several datasets. The number of datasets does not exceed 100. Each dataset is described by a single line that contains a string |
Output |
For each dataset, print an integer if the angle described by the given direction can be represented as an integer, otherwise print it as an irreducible fraction. Follow the format of the sample output. |
Sample Input |
north west northwest northnorthwest westwestwestnorth # |
Sample Output |
0 90 45 45/2 315/4 |
Problem Source |
JAG Practice Contest for ACM-ICPC Asia Regional 2014 |
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int gcd(int x,int y) { if(y%x==0)return x; return gcd(y%x,x); } int main (void) { int n,m,i,j,k,l; char str[11111]; int s[11111]; while(gets(str)&&str[0]!=‘#‘) { l=0; for(i=0;str[i];i++) if(str[i]==‘n‘) { s[l++]=1; i+=4; }else { s[l++]=-1; i+=3; } int x,y; y=1; if(s[--l]==1) { x=0; }else { x=90; } k=1; while(l--) { x*=2; y*=2; k*=2; if(s[l]==1)x-=90; else x+=90; } int g; if(x%y==0) printf("%d\n",x/y); else { g=gcd(x,y); printf("%d/%d\n",x/g,y/g); } ; } return 0; }