Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.*;
- import com.company.Multime;
- public class Main {
- public static int MOD = 666013;
- public static void insertInHash(ArrayList<Integer>[] hash, int numar) {
- int rest = numar % MOD;
- if (findInHash(hash, numar) == -1)
- hash[rest].add(numar);
- }
- public static int findInHash(ArrayList<Integer>[] hash, int numar) {
- int rest = numar % MOD;
- for (int i = 0; i < hash[rest].size(); ++i) {
- if (hash[rest].get(i) == numar)
- return i;
- }
- return -1;
- }
- public static ArrayList<Integer> findIntersection(ArrayList<Integer>[] hashA, ArrayList<Integer>[] hashB) {
- ArrayList<Integer> ans = new ArrayList<>();
- for (int i = 0; i < MOD; ++i) {
- for (int j = 0; j < hashA[i].size(); ++j) {
- if (findInHash(hashB, hashA[i].get(j)) != -1)
- ans.add(hashA[i].get(j));
- }
- }
- return ans;
- }
- public static void main(String[] args) {
- // Multime a = new Multime();
- // Multime b = new Multime();
- ArrayList<Integer>[] hashA = new ArrayList[MOD];
- ArrayList<Integer>[] hashB = new ArrayList[MOD];
- for(int i = 0; i < MOD; i++) {
- hashA[i] = new ArrayList<Integer>();
- hashB[i] = new ArrayList<Integer>();
- }
- int option;
- Scanner sc = new Scanner(System.in); // Declararea scannerului pentru citirea de la tastatura
- do {
- // Afisarile pentru optiuni
- System.out.println("Ce optiune doriti sa alegeti?\n");
- System.out.println("0. Iesire\n");
- System.out.println("1. Setati Multimea A\n");
- System.out.println("2. Setati Multimea B\n");
- System.out.println("3. Aflati intersectia dintre A si B");
- option = sc.nextInt(); // Citirea optiunii alese
- if (option == 1) {
- System.out.println("Cate elemente doriti sa introduceti?\n");
- int n = sc.nextInt(); // Se citeste numarul de elemente din noul sir
- ArrayList<Integer> A = new ArrayList<Integer>();
- for (int i = 0; i < n; ++i) {
- int val = sc.nextInt(); // citirea fiecarui element
- // A.add(val); // inserarea in lista A
- insertInHash(hashA, val);
- }
- // a = new Multime(A); // creearea multimii a din lista A
- } else if (option == 2) {
- System.out.println("Cate elemente doriti sa introduceti?\n");
- int n = sc.nextInt(); // Se citeste numarul de elemente din noul sir
- ArrayList<Integer> B = new ArrayList<Integer>();
- for (int i = 0; i < n; ++i) {
- int val = sc.nextInt(); // citirea fiecarui element
- // B.add(val); // inserarea in lista B
- insertInHash(hashB, val);
- }
- // b = new Multime(B);// creearea multimii b din lista B
- } else if (option == 3) {
- // Se insereaza intr-un ArrayList rezultatul intersectiei dintre a si b
- // ArrayList<Integer> rezultat = new ArrayList<Integer>(a.intersectie(b));
- ArrayList<Integer> rezultat = findIntersection(hashA, hashB);
- System.out.println(rezultat); // Se afiseaza rezultatul
- }
- } while (option != 0); // Cand optiunea e 0, programul se opreste
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement