Test (clasa a 5-a) Notă: rezolvaţi această problemă fără a folosi vectori. Georgel vrea să-i testeze cunoştinţele de matematică lui Săndel. Pentru aceasta, îi propune lui Săndel două numere naturale a şi b. Cu prima cifră a numărului a, plasată în locul primei cifre a numărului b se formează un nou număr. Un alt număr se formează cu prima cifră a numărului a plasată în locul ultimei cifre a numărului b. Se obţin două noi numere cu a doua cifră a numărului a plasată în locul primei cifre a numărului b, respectiv în locul ultimei cifre a numărului b. Se continuă formarea şi altor numere după aceleaşi reguli, până când se epuizează cifrele numărului a (dacă numărul a are 3 cifre, atunci se vor forma 6 numere). Cerinţă Cunoscând cele două numere a şi b, Săndel va trebui să găsească cel mai mare număr prim format conform regulii de mai sus, ştiind că se iau în calcul pentru această determinare şi valorile iniţiale ale numerelor a şi b. În cazul în care nu există niciun număr prim, conform cerinţelor de mai sus, se va afişa cel mai mare număr care se poate forma, ştiind că se iau în calcul şi valorile iniţiale ale numerelor a şi b. Date de intrare De pe prima linie a fişierului de intrare test.in se citesc cele două numere a şi b, în această ordine. Date de ieşire Pe prima linie a fişierului de ieşire test.out se va afişa numărul cerut. Restricţii 10 ≤ a, b ≤ 1000000 Exemple test.intest.outExplicatii 19 913 919 Numerele care se formează sunt: 113 (folosind prima cifră din a în locul primei cifre din b), 911 (folosind prima cifră din a în locul ultimei cifre din b), 913 (folosind a doua cifră din a în locul primei cifre din b), 919 (folosind a doua cifră din a în locul ultimei cifre din b). La aceste numere se adaugă valorile iniţiale ale lui a şi b, adică 19 şi 913. Se observă că cel mai mare număr prim dintre numerele de mai sus este 919 260 444 644 Numerele care se formează sunt: 244 (folosind prima cifră din a în locul primei cifre din b), 442 (folosind prima cifră din a în locul ultimei cifre din b), 644 (folosind a doua cifră din a în locul primei cifre din b), 446 (folosind a doua cifră din a în locul ultimei cifre din b), 44 (folosind a treia cifră din a în locul primei cifre din b) şi 440 (folosind a treia cifră din a în locul ultimei cifre din b). La aceste numere se adaugă valorile iniţiale ale lui a şi b, adică 260 şi 444. Se observă că nu există niciun număr prim, atunci se va afişa cel mai mare număr dintre numerele de mai sus, adică 644
Răspunsuri la întrebare
Răspuns de
1
#include <stdio.h>
int main(void) {
int a, b, prim = 0, maxprim = 0, p = 1, ca, max ;
scanf("%d" , &a);
scanf("%d" , &b);
int bb = b;
if (a > b)
max = a;
else
max = b;
while(bb > 9){
p = p * 10;
bb /= 10;
}
int d = 2;
while (d * d <= a && a % d != 0)
d++;
if (d * d > a)
maxprim = a;
d = 2;
while (d * d <= b && b % d != 0)
d++;
if (d * d > b)
if (maxprim < b)
maxprim = b;
if (d * d > b && prim == 0)
maxprim = b;
while (a != 0 ) {
ca = a % 10;
bb = (p * ca) + (b % p);
if (bb > max)
max = bb;
d = 2;
while (d * d <= bb && bb % d != 0)
d++;
if (d * d > bb && bb > maxprim)
maxprim = bb;
bb = b - b % 10 + ca;
if (bb > max)
max = bb;
d = 2;
while (d * d <= bb && bb % d != 0)
d++;
if (d * d > bb && bb > maxprim)
maxprim = bb;
a /= 10;
}
if (maxprim == 0)
printf("%d\n" ,max);
else
printf("%d\n" , maxprim);
return 0;
}
int main(void) {
int a, b, prim = 0, maxprim = 0, p = 1, ca, max ;
scanf("%d" , &a);
scanf("%d" , &b);
int bb = b;
if (a > b)
max = a;
else
max = b;
while(bb > 9){
p = p * 10;
bb /= 10;
}
int d = 2;
while (d * d <= a && a % d != 0)
d++;
if (d * d > a)
maxprim = a;
d = 2;
while (d * d <= b && b % d != 0)
d++;
if (d * d > b)
if (maxprim < b)
maxprim = b;
if (d * d > b && prim == 0)
maxprim = b;
while (a != 0 ) {
ca = a % 10;
bb = (p * ca) + (b % p);
if (bb > max)
max = bb;
d = 2;
while (d * d <= bb && bb % d != 0)
d++;
if (d * d > bb && bb > maxprim)
maxprim = bb;
bb = b - b % 10 + ca;
if (bb > max)
max = bb;
d = 2;
while (d * d <= bb && bb % d != 0)
d++;
if (d * d > bb && bb > maxprim)
maxprim = bb;
a /= 10;
}
if (maxprim == 0)
printf("%d\n" ,max);
else
printf("%d\n" , maxprim);
return 0;
}
CadirTimur:
ms
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Geografie,
9 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă
Franceza,
9 ani în urmă