题目链接:http://codeforces.com/contest/404/problem/B
#include <cstdio> #include <cstring> #include <cstdlib> #include <set> #include <map> #include <vector> #include <queue> #include <algorithm> #include <iostream> using namespace std; double a, d; int n; int main() { cin >> a >> d >> n; int cnt = 0; double len = 0; for (int i = 1; i <= n; i++) { len += d; int temp = len / a; len = len - temp * a; cnt += temp; cnt %= 4; if (cnt == 0) { printf("%.10lf %.10lf ", len, 0.0); } else if (cnt == 1) { printf("%.10lf %.10lf ", a, len); } else if (cnt == 2) { printf("%.10lf %.10lf ", a - len, a); } else { printf("%.10lf %.10lf ", 0.0, a - len); } } return 0; }
也可以用浮点数取模函数fmod(a,b);
#include <cstdio> #include <cmath> using namespace std; int main() { double a,d,x,y,s=0.0; int n; scanf("%lf%lf%d",&a,&d,&n); for(int i=1; i<=n; i++) { s+=d; s=fmod(s,4*a); if(s <= a)x=s,y=0; else if(s <=2*a)x=a,y=s-a; else if(s <=3*a)x=a-(s-2*a),y=a; else x=0,y=a-(s-3*a); printf("%lf %lf ",x,y); } return 0; }