Advertisement
andrew_lau2021

ACSL #1 Submission (2019-2020) - Andrew Lau

Dec 15th, 2019
568
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.94 KB | None | 0 0
  1. package com.company;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. public class Main {
  7.     ArrayList<String> characters;
  8.     String number;
  9.     int position;
  10.     int positionNumber;
  11.  
  12.     public Main(String N, int P){
  13.         characters = new ArrayList<>();
  14.         number = N;
  15.         position = P;
  16.         positionNumber = Integer.parseInt(number.substring(number.length() - P, number.length() - P + 1));
  17.         for (int i = 0; i < number.length(); i++) {
  18.             characters.add(number.substring(i, i + 1));
  19.         }
  20.         evaluate();
  21.     }
  22.  
  23.     public void evaluate(){
  24.         for (int i = 0; i < number.length() - position; i++){
  25.             characters.set(i, String.valueOf(Integer.parseInt(characters.get(i)) + positionNumber));
  26.         }
  27.         characters.set((number.length() - position), numberOfPrimeFactors());
  28.         for (int i = number.length() - position + 1; i < number.length(); i++){
  29.             characters.set(i, String.valueOf(Math.abs(Integer.parseInt(characters.get(i)) - positionNumber)));
  30.         }
  31.  
  32.         String finalResult = "";
  33.         for (String s : characters){
  34.             finalResult += s;
  35.         }
  36.         System.out.println(finalResult);
  37.     }
  38.  
  39.     public String numberOfPrimeFactors(){
  40.         Set<Integer> numFactors = new HashSet<>(); //To prevent repetitions of prime factors
  41.         long longNumber = Long.parseLong(number);
  42.  
  43.         for (int i = 2; i <= longNumber; i++){ //Checks if it is a factor
  44.             while (longNumber % i == 0){
  45.                 numFactors.add(i);
  46.                 longNumber /= i;
  47.             }
  48.         }
  49.  
  50.         return String.valueOf(numFactors.size());
  51.     }
  52.  
  53.     public static void main(String[] args) {
  54.         Main n1 = new Main("102438", 3);
  55.         Main n2 = new Main("4329", 1);
  56.         Main n3 = new Main("6710", 2);
  57.         Main n4 = new Main("16807", 1);
  58.         Main n5 = new Main("60098065452", 7);
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement