給你一個棋盤 輸入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; }