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;
    }
    
  • 相关阅读:
    连续多步骤业务流程的暂停、中断和恢复
    什么是XML
    泛型擦除和反射配置文件
    类加载器和反射
    网络安全协议(二)
    网络通信协议(一)
    多线程之线程安全
    JAVA之线程池
    JAVA之多线程
    2020/8/1 JAVA之IO流(四)
  • 原文地址:https://www.cnblogs.com/linzhengmin/p/11253843.html
Copyright © 2011-2022 走看看