题意:给出一个边长为a的正方形,给出d,给出n,输出走得距离为i个d的时候的坐标
学习的这一篇
http://blog.csdn.net/synapse7/article/details/21595639
用fmod可以对浮点数取余
然后当d很大的时候,做除法容易产生较大的误差,所以先用fmod(d,4*a)处理一下(事实证明不处理,会wa在11个数据)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) 14 15 typedef long long LL; 16 const int INF = (1<<30)-1; 17 const int mod=1000000007; 18 const int maxn=100005; 19 20 double a,d; 21 int n; 22 23 void f(double len){ 24 int ans=(int)(len/a)%4; 25 len=fmod(len,a); 26 if(ans==0) printf("%f 0\n",len); 27 if(ans==1) printf("%f %f\n",a,len); 28 if(ans==2) printf("%f %f\n",a-len,a); 29 if(ans==3) printf("0 %f\n",a-len); 30 } 31 32 33 int main(){ 34 cin>>a>>d>>n; 35 d = fmod(d, 4 * a); 36 for(int i=1;i<=n;i++) f(i*d); 37 }
时间: 2024-12-21 18:14:44