zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法提高 拿糖果

    算法提高 拿糖果
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      妈妈给小B买了N块糖!但是她不允许小B直接吃掉。
      假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数。这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖。然后小B就可以接着拿糖。
      现在小B希望知道最多可以拿多少糖。
    输入格式
      一个整数N
    输出格式
      最多可以拿多少糖
    样例输入
    15
    样例输出
    6
    数据规模和约定
      N <= 100000

    import java.util.ArrayList;
    import java.util.Scanner;
    
    
    public class 拿糖果 {
    	public static boolean judgePrime(int n) {
            if(n == 2)
                return true;
            for(int i = 2;i <= n;i++) {
                if(n % i == 0)
                    return false;
                if(i > n / 2)
                    break;
            }
            return true;
        }
        //获取n的平方根以内的所有质因数
        public static ArrayList<Integer> getPrime(int n) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            n = (int) Math.sqrt(n);
            for(int i = 2;i <= n;i++) {
                if(judgePrime(i)) {
                        list.add(i);
                }
            }
            return list;
        }
        
        public static void printResult(int n) {
            int[] dp = new int[100005];
            ArrayList<Integer> list = getPrime(100005);
            int len = list.size();
            int judge, prime;
            for(int i = 1;i <= n;i++) {
                judge = (int) Math.sqrt(i);
                for(int j = 0;j < len;j++) {
                    prime = list.get(j);
                    if(prime > judge)
                        break;
                    if(judge % prime == 0) {
                        if(dp[i] < dp[i - prime * 2] + prime)
                            dp[i] = dp[i - prime * 2] + prime;
                    }
                }
            }
            System.out.println(dp[n]);
            return;
        }
        
        
        public static void main(String[] args) {
            
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            printResult(n);
        }
    
    }
    
    
  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078823.html
Copyright © 2011-2022 走看看