【二分题目】

二分

分巧克力

分巧克力

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;
        }

}
相关推荐
一叶飘零_sweeeet5 分钟前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
艾伦~耶格尔32 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
yujkss1 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910131 小时前
小程序开发APP
开发语言·人工智能·python·yolo
一只叫煤球的猫1 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心1 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
啊阿狸不会拉杆1 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
JH30732 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅3 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow
David爱编程3 小时前
线程调度策略详解:时间片轮转 vs 优先级机制,面试常考!
java·后端