zoukankan      html  css  js  c++  java
  • [LightOJ1008]Fibsieve`s Fantabulous Birthday 题解

    前言

    扫了一眼网上的题解,都是找规律。
    估计就我一个蒟蒻在打二分。

    题解

    设一个" ┐"形为一层。
    我们二分查找该数在那一层,然后就可以直接计算它的位置了。

    代码

    #include <cstdio>
    
    int main(){
    	int T, cs = 0; scanf("%d", &T);
    	while (T--){
    		long long x; scanf("%lld", &x);
    		long long l = 1, r = 100000000, ans = 1;
    		while (l <= r){
    			long long mid = (l + r) / 2, tmp = (mid & 1) ? mid : mid - 1;
    			long long res = tmp * tmp + !(mid & 1);
    			if (res & 1)
    				res = res - mid * 2 + 2; 
    			if (x >= res)
    				l = mid + 1, ans = mid;
    			else if (x < res)
    				r = mid - 1;
    		}
    		long long tmp = (ans & 1) ? ans : ans - 1;
    		long long res = tmp * tmp + !(ans & 1);
    		if (res & 1)
    			res = res - ans * 2 + 2;
    		long long lft = x - res; printf("Case %d: ", ++cs);
    		if (res & 1){ 
    			long long posx = ans, posy = 1;
    			if (lft < ans)
    				posy += lft;
    			else{
    				posy = ans; lft -= ans - 1;
    				posx -= lft;
    			}
    			printf("%lld %lld
    ", posx, posy);
    		}
    		else{
    			long long posx = 1, posy = ans;
    			if (lft < ans)
    				posx += lft;
    			else{
    				posx = ans; lft -= ans - 1;
    				posy -= lft;
    			}
    			printf("%lld %lld
    ", posx, posy);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    OpenGL完整实例
    OpenGL
    Socket(2)
    Socket(1)
    Stream,Reader/Writer,Buffered的区别(2)
    Stream,Reader/Writer,Buffered的区别(1)
    SQLite数据库与Contentprovider(2)
    SQLite数据库与Contentprovider(1)
    数据存储和访问
    AIDL与service
  • 原文地址:https://www.cnblogs.com/linzhengmin/p/11253843.html
Copyright © 2011-2022 走看看