Informatică, întrebare adresată de adimanole, 8 ani în urmă

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.

exemplu :

aur.in
7 10
25
9
13
459
2
79
9

aur.out
7,12

explicatii

n are valorea 7 si K are valoarea 10 , pe tablita ste scris 259134592799 , cea de-a zeca cifra ste 7 . In total sunt scris 12 cifre

Răspunsuri la întrebare

Răspuns de ProMinecraft69
0

Răspuns:

#include <iostream>

#include <fstream>

#include  <string.h>

using namespace std;

ifstream f("aur.in");

ofstream g("aur.out");

long long P, mx;

int main() {

   char s[2776];

   string j = "";

   long long n, sol, poz, test;

   long long k = 0;

   f >> sol;

   if (sol == 1)

       f >> n;

   if (sol == 2) {

       f >> n >> poz;

   }

   if (sol == 3) {

       f >> n >> P;

   }

   for (int i = 1; i <= n; i++) {

       f >> s;

       k += strlen(s);

       j += s;

   }

   if (sol == 1)

       g << k;

   else if (sol == 2)

       g << j[poz - 1];

   if (sol == 3) {

       for (int i = 0; i < j.length(); i++) {

           test = 0;

           for (int f = i; f < i + P && f < j.length(); f++) {

               test = test * 10 + j[f] - '0';

           }

           //  cout << test <<" ";

           if (test > mx)

               mx = test;

       }

       g << mx;

   }

   return 0;

}

Explicație:

Răspuns de pmarian98
1

Răspuns:

#include <fstream>

using namespace std;

ifstream f("aur.in");

ofstream g("aur.out");

long long nr_max,p=1,nou,nr;

int main()

{

   char c,cifraK;

   int nr_cif=0,cerinta,K,N,i,P;

   f>>cerinta>>N;

   if (cerinta==2) f>>K;

   else if (cerinta==3) f>>P;

///numarul de cifre scrise pe tablita lui Tândală

   if (cerinta==1)

   {

       while(f>>c)

           nr_cif++;

       g<<nr_cif<<'\n';

   }

   

   else  

    ///afisarea celei de-a K cifre din fisier

   if (cerinta==2)

       while(f>>c)

       {

           nr_cif++;

           if (nr_cif==K)

           {

               g<<c<<'\n';

               break;

           }

       }

   

   else

///luam secventele de p cifre consecutive si construim un numar cu ele

   {

       for(i=1; i<P; i++)

       {

           f>>c;

           nr=nr*10+(c-'0');

           p=p*10; //puterea lui p imi indica nr de cifre pe care le are numarul

          ///p=pow(10,P);

       }

       nr_max=nr; //presupunem ca acesta este cel mai mare numar de p   cifre

       while(f>>c)

       {

           nou=(nr%p)*10+(c-'0'); //rasturnatul numarului nr

           if(nou>nr_max) nr_max=nou;

           nr=nou;

       }

       g<<nr_max<<'\n';

   }

   return 0;

}

Explicație:

Alte întrebări interesante