【二分题目】

二分

分巧克力

分巧克力

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

}
相关推荐
ChinaRainbowSea10 分钟前
八. Spring Boot2 整合连接 Redis(超详细剖析)
java·数据库·spring boot·redis·后端·nosql
MATLAB代码顾问16 分钟前
MATLAB实现多种群遗传算法
开发语言·matlab
小咕聊编程33 分钟前
【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发
java·spring boot·小程序
叫我DPT36 分钟前
Go 中 defer 的机制
开发语言·后端·golang
幻想趾于现实1 小时前
C# 装箱和拆箱(以及 as ,is)
开发语言·c#
某个默默无闻奋斗的人1 小时前
三傻排序的比较(选择,冒泡,插入)
java·数据结构·算法
米码收割机3 小时前
【PHP】基于 PHP 的图片管理系统(源码+论文+数据库+图集)【独一无二】
开发语言·数据库·php
yyytucj3 小时前
优化 PHP-FPM 参数配置:实现服务器性能提升
服务器·开发语言·php
鲤籽鲲3 小时前
C# 中 [MethodImpl(MethodImplOptions.Synchronized)] 的使用详解
java·开发语言·c#