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

Problema de pe pbinfo #3677:
Cerința:
Se dau două numere naturale n și k. Determinați cea mai mare valoare care se poate obține eliminând din numărul n exact k cifre aflate pe poziții alăturate(una după alta).
Date de intrare:
Fișierul de intrare va conține pe prima linie numărul n și pe a doua linie nunărul k.
Date de ieșire:
În fișierul de ieșire se va scrie pe prima linie valoarea cerută.
Restricții și precizări:
- n este un număr cuprins între 10 și 10^17 inclusiv.
- 1 ≤ k < numărul de cifre ale lui n.
- pentru 50 de puncte k este 1.
Exemplul 1:

cifrevecine.in

10002
3

cifrevecine.out

12

Exemplul 2:

cifrevecine.in

1938
2

cifrevecine.out

38

Răspunsuri la întrebare

Răspuns de simulink
3

Răspuns:

#include <fstream>

#include <iostream>

using namespace std;

int main()

{

int n,i=0, nr,k;

char a[18];

ifstream f("cifrevecine.in");

ofstream g("cifrevecine.out");

while (!f.eof())

{

   i++;

   f>>a[i];

}

f.close();

k=a[i-1]-'0';

n=i-2;

i=1;

while (a[i]>=a[i+k] && i+k<n) i++;

if(i+k<n)

  {for (nr=1;nr<i;nr++) g<<a[nr];

  for (nr=i+k;nr<=n;nr++) g<<a[nr];

  }

else

   if(i+k==n)

   for(nr=1;nr<=i;nr++) g<<a[nr];

  else

   for(nr=1;nr<n;nr++) g<<a[nr];

g.close();

}

Explicație:

Solutie de 95 p. Nu-mi dau seama ce caz exceptional nu este inclus aici...


Ionut945: ok...multumesc mult!!! oare daca vei reusi sa faci solutia de 100 de puncte ai putea sa mi-o trimiti si mie?
Ionut945: am gasit o solutie care da bine la testul 9 :
Ionut945: #include

using namespace std;

ifstream fin("cifrevecine.in");
ofstream fout("cifrevecine.out");

int maxnumber(unsigned long long int n, int k)
{
for (int j = 0; j < k; j++) {
int ans = 0;
int i = 1;
while (n / i > 0) {
int temp = (n / (i * 10)) * i + (n % i);
i *= 10;
ans = max(ans, temp);
}

n = ans;
}
return n;
}

int main()
{
unsigned long long int n;
int k;
fin >> n >> k;
fout << maxnumber(n, k) << endl;
return 0;
}
Ionut945: chiar daca da doar 55 de puncte,da bine la acel caz
Alte întrebări interesante