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

Gicu, fiind plictisit se juca in timpul orei de matematica. Din pacate, profesorul l-a vazut si i-a spus ca ii pune nota 4 daca nu rezolva urmatoarea problema: se citesc doua numere naturale n si c. Sa se determine numerele întregi mai mici sau egale cu n au cifra de control c.
Calculaţi cifra de control a unui număr întreg efectuând suma cifrelor sale, apoi suma cifrelor acestei sume etc. până se obţine o sumă formată dintr-o singură cifră.
Exemple:
567 -> 18 -> 9
181 -> 10 -> 1
141 -> 6

Date de intrare
Fisierul de intrare cifra.in contine doua numere naturale n si c cu semnificatia din enunt.

Date de ieşire
Fisierul de iesire cifra.out va contine o singura linie pe care vor fi scrise numerele mai mici sau egale cu n care au cifra de control c.

Restricţii
1 ≤ n ≤ 10000000
1 ≤ c ≤ 9
Exemplu
cifra.in cifra.out
31 3
3 12 21 30

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("cifra.in");

ofstream g("cifra.out");

int cifcontrol(int m)

{

   int a, sc;

   while (m>9) {

       a=m; sc=a%10; a/=10;

       while (a) {

           sc+=a%10;

           a/=10;

       }

       m=sc;

   }

   return m;

}

int main()

{

   int n, c;

   f >> n >> c;

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

       if (cifcontrol(i)==c) {

           g << i << " ";

       }

   }

   return 0;

}

Explicație:

Alte întrebări interesante