• 常考面试算法题之数学


    超级素数幂

    如果一个数字能表示为pq(表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。
    输入描述:

    输入一个正整数n(2 ≤ n ≤ 10^18)

    输出描述:

    如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。
    如果n不是超级素数幂,则输出No
    示例1
    输入
    27
    输出
    3 3

    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args){
           Scanner scanner=new Scanner(System.in);
           System.out.println("剩下数字个数 :");
           long n=scanner.nextLong();
           boolean flag=false;
           double p;
           for(int q=2;q*q<n;q++){
               p=Math.pow((double) n,1d/q);
               System.out.println(1d/q);
               System.out.println(1/q);
               if((long )p==p && isPrimeNum((long)p)){
                   System.out.println((long)p+" "+q);
                   flag=true;
                   break;
               }
           }
           if(!flag){
               System.out.println("No");
           }
        }
    
        public static boolean isPrimeNum(long num){
            if (num<=1){
                return false;
            }
            for (int i=2;i*i<=num;i++){
                if(num%i==0){
                    return false;
                }
            }
            return true;
        }
    }
    

    用 1d 取double很关键!

    剩下数字个数 :
    27
    0.5
    0
    0.3333333333333333
    0
    3 3
    

    找整除

    牛牛想在[a, b]区间内找到一些数满足可以被一个整数c整除,现在你需要帮助牛牛统计区间内一共有多少个这样的数满足条件?
    输入描述:

    首先输入两个整数a,b,(-510^8 ≤ a ≤ b ≤ 510^8)
    接着是一个正整数c(1 <= c <= 1000)

    输出描述:

    输出一个整数表示个数。
    示例1
    输入
    0 14 5
    输出
    3

    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args){
           Scanner scanner=new Scanner(System.in);
           System.out.println("整数a :");
           int a=scanner.nextInt();
            System.out.println("整数b :");
            int b=scanner.nextInt();
            System.out.println("正整数c :");
            int c=scanner.nextInt();
            int count=0;
            for(int n=a/c ; n*c<=b;n++ ){
           if(c*n>=a) {
               count++;
           }
            }
            System.out.println(count);
        }
    }
    

    魔力手环

    小易拥有一个拥有魔力的手环上面有n个数字(构成一个环),当这个魔力手环每次使用魔力的时候就会发生一种奇特的变化:每个数字会变成自己跟后面一个数字的和(最后一个数字的后面一个数字是第一个),一旦某个位置的数字大于等于100就马上对100取模(比如某个位置变为103,就会自动变为3).现在给出这个魔力手环的构成,请你计算出使用k次魔力之后魔力手环的状态。
    输入描述:

    输入数据包括两行:
    第一行为两个整数n(2 ≤ n ≤ 50)和k(1 ≤ k ≤ 2000000000),以空格分隔
    第二行为魔力手环初始的n个数,以空格分隔。范围都在0至99.

    输出描述:

    输出魔力手环使用k次之后的状态,以空格分隔,行末无空格。
    示例1
    输入

    3 2
    1 2 3
    输出
    8 9 7

    
    
    

    混合颜料

    最大的奇约数

    末尾0的个数

    Java代码实现
    

    Learn ,Practice ,Summary !
  • 相关阅读:
    Mac 生成public_key
    OmniGraffler软件和激活码
    Maven将本地项目打包后引入本地另一个项目
    spring boot 项目启动无法访问,排查
    服务端推送
    使用IDEA进行commit合并(折叠)
    将map转为Object,支持 Date/Boolean
    mysql 删除同样记录只保留一条
    Springboot文件上传限制
    Springboot 上传文件
  • 原文地址:https://www.cnblogs.com/daminzhou/p/8301179.html
Copyright © 2020-2023  润新知