【二分题目】

二分

分巧克力

分巧克力

java 复制代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int n=scan.nextInt();
        int k=scan.nextInt();//小朋友
        int[][] area=new int[n][2];
        for(int i=0;i<n;i++){
            int h=scan.nextInt();
            int w=scan.nextInt();
            area[i][0]=h;
            area[i][1]=w;
        }
        System.out.println(function(area,k));
        scan.close();
}
	
    static int function(int[][]area,int k){
        int l=1;//巧克力边长最小为l
        int r=(int) 1e5;//边长最大为r
        int mid=0;
        while(l<r) {
        	mid=(l+r+1)/2;
        	if(check(area,mid)>=k) {//取满足条件的最大边长,满足条件时动l,所以循环条件时>=
        		l=mid;
        	}else {
        		r=mid-1;
        	}
        }
		return l;
        
    }
    //判断边长为mid的巧克力,可以分成几块
	private static int check(int[][]area,int mid) {
		// TODO Auto-generated method stub
		int res=0;
		for(int i=0;i<area.length;i++) {
			res+=(area[i][0]/mid)*(area[i][1]/mid);
		}
		return res;
	}
}

求阶乘

求阶乘

java 复制代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
       long k=scan.nextLong();
       long l=0;//最小是0!
       long r=(long) 1e19;//最大是1e19 !
       while(l<r){//
           long mid=(l+r)>>1;
           if(check(mid)>=k){//找满足条件的最小N,满足条件时动r,所以执行r=mid,所以条件是>=
               r=mid;
           }else{
               l=mid+1;
           }
       }
       if(check(r)==k){
           System.out.println(r);
       }else{
           System.out.println(-1);
       }
        scan.close();
    }
    //检查一下数字num的阶乘末尾的0的个数
    static long check(long num){
        long res=0;
        while(num!=0){
            res+=num/5;
            num/=5;
        }
        return res;
    }
}

计算方程

计算方程

java 复制代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
	  public static void main(String[] args) {
	        Scanner scan = new Scanner(System.in);
	        //在此输入您的代码..
	        int t=scan.nextInt();
	        for(int i=0;i<t;i++){
	            int k=scan.nextInt();
	            int m=scan.nextInt();
	            System.out.println(func(k,m));
	        }
	        scan.close();
	    }
	    static int func(int k,int m){
	        int l=1,r=(int)1e8,mid;
	        while(l<r){
	            mid=(l+r)/2;
	            if(check(mid,k,m)){
	                r=mid;
	            }else {
	                l=mid+1;
	            }
	        }
	        return l;
	    }
        static boolean check(int x,int k,int m){
            return Math.sqrt(x)+(int)(Math.log(x)/Math.log(k))>m;
        }

}
相关推荐
高山上有一只小老虎19 小时前
构造A+B
java·算法
学困昇19 小时前
C++中的异常
android·java·c++
MC丶科20 小时前
Java设计模式漫画英雄宇宙-工厂模式 —Factory博士的“超级英雄制造机”!
java·设计模式·漫画
q***318320 小时前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
虎子_layor20 小时前
告别Redis瓶颈:Caffeine本地缓存优化实战指南
java·后端
q***985220 小时前
什么是Spring Boot 应用开发?
java·spring boot·后端
带刺的坐椅20 小时前
Solon AI 开发学习4 - chat - 模型实例的构建和简单调用
java·ai·chatgpt·solon
hadage23320 小时前
--- JavaScript 的一些常用语法总结 ---
java·前端·javascript
合作小小程序员小小店20 小时前
桌面安全开发,桌面二进制%恶意行为拦截查杀%系统安全开发3.0,基于c/c++语言,mfc,win32,ring3,dll,hook,inject,无数据库
c语言·开发语言·c++·安全·系统安全
合作小小程序员小小店20 小时前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#