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
#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;
}
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;
}