Operacije po modulu – rešenje

U ovom zadatku, potrebno je odrediti poslednje tri cifre zbira i poslednje tri cifre proizvoda četiri uneta cela broja. Ovaj tip zadataka se često koristi u programiranju za vežbanje rada sa operacijama po modulu i manipulacijom velikim brojevima. Takođe, zadatak demonstrira kako pravilno upravljati podacima kako bi se izbeglo prekoračenje granica tipa podataka.
Objašnjenje rešenja u C
Kod u C jeziku rešava problem koristeći operaciju modula kako bi izvukao poslednje tri cifre zbira i proizvoda brojeva. Glavne tačke koda su:

  • Unos podataka: Četiri cela broja se unose i čuvaju u varijable a, b, c, i d.
  • Zbir i proizvod: Prvo se računa zbir svih brojeva, a zatim proizvod prvih dva i zadnjih dva broja da bi se izbeglo prekoračenje veličine tipa int. Zatim se ti proizvodi množe da bi se dobio konačan rezultat.
  • Izračunavanje modula: Poslednje tri cifre zbira i proizvoda se dobijaju korišćenjem operacije modula sa 1000.
  • Ispisivanje rezultata: Na kraju, rezultat se ispisuje na standardni izlaz.

Rešenje u programskom jeziku C

#include <stdio.h>


int main()
{
    long long pro,ab,cd;     //zauzima 64 bita memorije
    int  a,b,c,d,zbir,p3,z3;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    zbir=a+b+c+d;
    ab=a*b;                               //množi dva po dva da bi podatak mogao da stane kao int tj. u                                                                     //32bita
    cd=c*d;
    pro=ab*cd;
    z3=zbir%1000;              //Ostatak deljenja sa 1000 su zapravo 3 poslednje cifre
    p3=pro%1000;
    printf("%d %d",z3,p3);
    return 0;
}

Objašnjenje

Brojevi <999 mogu da se deklarisu kao int, jer nisu mnogo veliki, medjutim proizvod 4 takva broja je
broj veći od 2^31 − 1 = 2.147.483.647, što je najveća vrednost tipa int (u C-u je i long često samo 32-bitni).
Zbog toga se proizvod mora deklarisati kao long long i on moze da prihvati broj<2^64

Kod u programskom jeziku JAVA

Rešenje u Javi je sličan pristup kao i u C, uz upotrebu odgovarajućih tipova podataka:

import java.util.Scanner;

public class ModulOperacije {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a, b, c, d, zbir, z3, p3;
        long ab, cd, pro;

        // Unos 4 broja
        a = sc.nextInt();
        b = sc.nextInt();
        c = sc.nextInt();
        d = sc.nextInt();

        // Računanje zbira i proizvoda
        zbir = a + b + c + d;
        ab = (long) a * b;
        cd = (long) c * d;
        pro = ab * cd;

        // Poslednje tri cifre
        z3 = zbir % 1000;
        p3 = (int) (pro % 1000);

        // Ispis rezultata
        System.out.printf("%d %d", z3, p3);
    }
}

Ovaj Java program koristi sličnu logiku kao i C program, s tim što koristi klase Scanner za unos podataka i tip long za rad sa većim vrednostima proizvoda.