Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <math.h>
- typedef unsigned long long int lli;
- lli MMC(lli a, lli b);
- lli MDC(lli a, lli b);
- using namespace std;
- int main()
- {
- double CONST = M_PI/180.0;
- int T;
- lli N, a;
- double l;
- lli MMCs[360];
- MMCs[0] = 360;
- for(int j=1; j<360; j++)
- MMCs[j] = MMC(j, 360);
- scanf("%d", &T);
- for(int i=0; i<T; i++)
- {
- scanf("%lld %lf %lld", &a, &l, &N);
- if(a%360==0){
- printf("%0.2lf %0.2lf\n", l*N, 0.0);
- continue;
- }
- if((a*N)%360==0){
- printf("%0.2lf %0.2lf\n", 0.0, 0.0);
- continue;
- }
- N %= MMCs[a%360];
- //printf("%lli %lli\n", N, MMC(a, 360));
- double c_op, c_ad;
- double x_ini = 0, y_ini = 0;
- for(int j=0; j<N; j++){
- c_op = sin(((a*j)%360)*CONST)*l;
- c_ad = cos(((a*j)%360)*CONST)*l;
- x_ini += c_ad;
- y_ini += c_op;
- // printf("%llu ==%0.2lf %0.2lf== %0.2lf %0.2lf\n", (a*j)%360, c_op, c_ad, x_ini, y_ini);
- }
- if((int)(x_ini*100)%10 == 0 && (int)(x_ini*10)%10 == 0 && (int)x_ini%10 == 0) x_ini = 0;
- if((int)(y_ini*100)%10 == 0 && (int)(y_ini*10)%10 == 0 && (int)y_ini%10 == 0) y_ini = 0;
- printf("%0.2lf %0.2lf\n", x_ini, y_ini);
- }
- return 0;
- }
- lli MDC(lli a, lli b)
- {
- lli r;
- do{
- r = a%b;
- a = b;
- b = r;
- }while(r!=0);
- return a;
- }
- lli MMC(lli a, lli b)
- {
- return (a*b)/(MDC(a,b));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement