După ce au mers împreună prin lume, Păcală și Tândală au strâns o căruță plină de bănuți de aur, iar acum îi răstoarnă pe toți în curtea casei și îi împart în N
grămezi. Păcală numără bănuții din fiecare grămadă și îi dictează lui Tândală N
numere naturale pe care acesta trebuie să le scrie în ordine pe o tăbliță. După ore bune de muncă, Păcală constată că Tândală a scris pe un singur rând, în ordine, de la stânga la dreapta, toate numerele dictate de el, dar lipite unul de altul. Acum pe tăbliță e doar un șir lung de cifre. Ce să facă Păcală acum?
Cerința
Cunoscând cele N
numere naturale dictate de Păcală, scrieți un program care să determine:
1. numărul cifrelor scrise pe tăbliță de Tândală;
2. ce-a de-a K
-a cifră de pe tăbliță, în ordine de la stânga la dreapta;
3. cel mai mare număr ce se poate forma cu exact P
cifre alăturate de pe tăbliță, considerate în ordine de la stânga la dreapta.
Date de intrare
Fișierul de intrare aur.in
conţine:
- pe prima linie un număr natural C
care reprezintă numărul cerinței și poate avea valorile 1
, 2
sau 3
.
- pe cea de-a doua linie un număr natural N
dacă cerința este 1
, sau două numere naturale N
și K
(despărțite printr-un spațiu) dacă cerința este 2
, sau două numere naturale N
și P
(despărțite printr-un spațiu) dacă cerința este 3
.
- pe cea de-a treia linie, N
numere naturale despărțite prin câte un spațiu, ce reprezintă, în ordine, numerele pe care Păcală i le dictează lui Tândală.
Date de ieșire
Fișierul de ieșire aur.out
va conține pe prima linie un singur număr natural ce reprezintă rezultatul determinat conform fiecărei cerințe.
Restricții și precizări
1 ≤ N ≤ 100.000
și1 ≤ K ≤ 900.000
;- Se garantează ca există cel puțin
K
cifre scrise pe tăbliță. 1 ≤ P ≤ 18
; Se garantează ca există cel puținP
cifre scrise pe tăbliță.- toate numere dictate de Păcală sunt nenule și au cel mult
9
cifre fiecare; - Pentru rezolvarea corectă a primei cerințe se acordă
20
de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă30
de puncte, iar pentru rezolvarea corectă a celei de-a treia cerințe se acordă40
de puncte. - În concurs s-au acordat
10
puncte din oficiu. Aici se acordă pentru exemplele din enunț.
Exemplul 1:
aur.in
1 7 25 9 13 459 2 79 9
aur.out
12
Explicație
Se rezolvă cerința 1. Tândală a scris pe tăbliță: 259134592799
. Numărul cifrelor scrise de Tândală este 12
.
Exemplul 2:
aur.in
2 7 10 25 9 13 459 2 79 9
aur.out
7
Explicație
Se rezolvă cerința 2. N
are valoarea 7
și K
are valoarea 10
. Pe tăbliță este scris: 259134592799
, cea de-a zecea cifră este 7
.
Exemplul 3:
aur.in
3 7 4 25 9 13 459 2 79 9
aur.out
9279
Explicație
Se rezolvă cerința 3. N
are valoarea 7
și P
are valoarea 4
. Tândală a scris pe tăbliță: 259134592799
. Cel mai mare număr format din patru cifre este 9279
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema aur:
#include <stdio.h>
#include <stdlib.h>
int Test, N, cifra, nc, x, P, T, i, y ,nr, nz;
long long Max, p, nrc;
int main()
{
freopen ("aur.in", "r", stdin);
freopen ("aur.out", "w", stdout);
scanf("%d\n%d", &Test, &N);
if(Test >= 2) scanf("%d\n", &T);
if(Test == 3) P = T;
p = 1;
for (i = 1; i <= N; i++)
{
scanf("%d", &x); y = nz = 0;
while (x %10 == 0) {nc++; x/=10; nz++;}
while (x)
{
nc++;
y = y*10 + x%10;
x/=10;
}
while(y){
nr++;
if(nr==T) cifra=y%10;
if(nr<=P)
{
nrc = nrc*10+y%10;
p*=10;
}
if(nr==P)
{
p/=10;
Max=nrc;
}
if(nr>P)
nrc = nrc%p *10 + y%10;
if(nrc>Max) Max = nrc;
y/=10;
}
while (nz){
nr++;
if(nr==T) cifra=0;
if(nr<=P)
{
nrc = nrc*10;
p*=10;
}
if(nr==P)
{
p/=10;
Max=nrc;
}
if(nr>P)
nrc = nrc%p *10;
if(nrc>Max) Max = nrc;
nz--;
}
}
if(Test==1)printf("%d\n", nc);
if(Test==2)printf("%d\n", cifra);
if(Test==3)printf("%lld\n", Max);
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2978 aur
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2978 aur de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!