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. |
Input |
The input contains several datasets. The number of datasets does not exceed
100. |
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 ",x/y); else { g=gcd(x,y); printf("%d/%d ",x/g,y/g); } ; } return 0; }