ZADATAK 6: "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 CKod 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:
Objašnjenje rešenja u CKod 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>
using namespace std;
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;
}
using namespace std;
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 koji je veci od 2^32(2,147,483,647) sto je maksimalna vrednost koju bi mogao da prihvati long podatak.
Zbog toga se proizvod mora deklarisati kao long long i on moze da prihvati broj<2^64
broj koji je veci od 2^32(2,147,483,647) sto je maksimalna vrednost koju bi mogao da prihvati long podatak.
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);
}
}
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.