常考面试算法题之数学

超级素数幂

如果一个数字能表示为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 !
原文地址:https://www.cnblogs.com/daminzhou/p/8301179.html