?
给你一个棋盘 输入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; }
?