- #include <stdio.h>
- #include <string.h>
- double A,D;
- int N;
- long long divi;
- long intA,intD;
- long long distance,location;
- int main()
- {
- scanf("%lf%lf",&A,&D);
- scanf("%d",&N);
- intA=(long)(A*10000+0.5);
- intD=(long)(D*10000+0.5);
- for(int n=1;n<=N;n++)
- {
- distance=n*intD;
- divi=distance/intA;
- divi=divi%4;
- location=distance%intA;
- // printf("n=%d\n",n);
- if(divi==0)
- {
- printf("%lld.%lld %.6f\n",location/10000,location%10000,0.0);
- }
- else
- if(divi==1)
- {
- printf("%.6f %lld.%lld\n",A,location/10000,location%10000);
- }
- else
- if(divi==2)
- {
- printf("%lld.%lld %.6f\n",(intA-location)/10000,(intA-location)%10000,A);
- }
- else
- if(divi==3)
- {
- printf("%.6f %lld.%lld\n",0.0,(intA-location)/10000,(intA-location)%10000);
- }
- // printf("n=%d\n",n);
- }
- //
- return 0;
- }
- A,D = gets.split.map(&:to_f) ;
- ## A,D 是输入的浮点数
- ## puts A+D ;
- N = gets.to_i ;
- ## N 是输入的整数
- a = (A*10000)+0.2 ;
- a = a.to_i ;
- d = (D*10000)+0.2 ;
- d = d.to_i ;
- ## 把 A,D 转换为整数
- ## puts a+d ;
- for n in 1..N
- ## puts n ;
- distance = n*d ;
- ## 算出所有走过的路程
- divi = distance/a ;
- divi = divi%4 ;
- ## 算出运动员在哪条边上
- location = distance%a ;
- ## 算出运动员在这条边上走过的路程
- if divi==0 then
- print location/10000.0 ; puts "0.0000" ;
- end
- if divi==1 then
- print A.to_s+" " ; puts location/10000.0 ;
- end
- if divi==2 then
- print (a-location)/10000.0 ; puts " "+A.to_s ;
- end
- if divi==3 then
- print "0.0000" ; puts (a-location)/10000.0 ;
- end
- ## 按边输出坐标
- end
- tmp
来源: http://www.bubuko.com/infodetail-2985551.html