题目信息:uva 10161 - Ant on a Chessboard
题目比较简单,用模拟方法写的,看清规律,也可以用数学放法来求解:
1 #include<iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 int n;
8 while(true)
9 {
10 cin>>n;
11 if(n==0) break;
12 int x,y,t;
13 x=y=0;
14 t=0;
15 for(int i=1;i<=n/2+1;++i)
16 {
17 if(t+2*i -1>=n)
18 {
19 if(i%2==0)
20 {
21 y+=i;
22 if(n-t>=i) {x+=i; y-=n-t-i;}
23 else x+=n-t;
24 break;
25 }
26 else
27 {
28 x+=i;
29 if(n-t>=i){ y+=i;x-=n-t-i;}
30 else y+=n-t;
31 break;
32 }
33 }
34 t+=2*i-1;
35 }
36 cout<<x<<" "<<y<<endl;
37 }
38 return 0;
39 }