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

Cifra de control a unui număr natural se obţine prin adunarea cifrelor numărului; dacă rezultatul obţinut este o cifră, aceea este cifra de control a numărului dat; în caz contrar, se calculează suma cifrelor rezultatului obţinut, aplicând în mod repetat acest procedeu până când se obţine un rezultat de o singură cifră.
De exemplu cifra de control a numărului 998979 este 6, deoarece:
9+9+8+9+7+9 = 51, apoi
5+1 = 6
Cerinţă

Fiind date două numere naturale a şi b , precum şi o cifră c , să se determine câte numere cuprinse între a şi b , inclusiv a şi b , au cifra de control egală cu c .
Date de intrare

Fişierul de intrare control1.in conţine pe prima linie valorile a b c separate prin câte un spaţiu.
Date de ieşire

Fişierul de ieşire control1.out va conţine o singură linie pe care va fi scris un număr natural k care reprezintă numărul de valori cuprinse între a şi b (inclusiv) care au cifra de control egală cu c .
Restricţii

1 ≤ a ≤ b ≤ 2000000000
1 ≤ c ≤ 9

Răspunsuri la întrebare

Răspuns de paaaaaaul
0

#include <iostream>

#include <fstream>

using namespace std;

int cifControl(int n)

{

   while (n>9)

   {

       unsigned long int s=0;

       while (n>0)

       {

           s+=n%10;

           n/=10;

       }

       n=s;

       return n;

   }

}

int main()

{

   ifstream in("control1.in");

   ofstream out("control1.out");

   unsigned long int a, b, i;

   unsigned short int c, k=0;

   in >> a >> b >> c;

   for (i=a; i<=b; i++)

       if (cifControl(i)==c) k++;

   out << k;

   in.close();

   out.close();

   return 0;

}

Răspuns de andrei750238
0

PROGRAM EFICIENT PENTRU CALCULAREA CIFREI DE CONTROL.

Aceasta e varianta recomandata pentru un timp de executie mic :

#include <iostream>

using namespace std();

int main(){

int n;

cin >> n;

if(n==0) cout << 0;

else if (n%9==0) cout << 9;

else cout << n%9;

}

Alte întrebări interesante