UVA - 10161 Ant on a Chessboard(数学规律)

2015-01-25 07:48:51 · 作者: · 浏览: 4

?

给你一个棋盘 输入n,找出n在第几行第几列。

可以发现对角线的数是有规律增长的,那么只要找到当前输入的n在对角线的第几个数上,就可以得出行数和列数。

?

#include
  
   
#include
   
     using namespace std; typedef long long ll; int main() { //freopen("a.txt","r",stdin); ll n,a,b; while(~scanf("%lld",&n)&&n) { a=1;b=2; while(n>=a&&abs(n-a)>=(b/2)) { a=a+b; b+=2; } b/=2; if(b&1) { if(a>=n) printf("%lld %lld\n",b,b-(a-n)); else printf("%lld %lld\n",b-(n-a),b); } else { if(a>=n) printf("%lld %lld\n",b-(a-n),b); else printf("%lld %lld\n",b,b-(n-a)); } } return 0; } 
   
  


?