Rezolvare completă PbInfo #2407 odaoni

Dorel

a primit de ziua lui un tricou pe care era scris numărul n.

Cerința

Aflaţi câţi divizori ai lui n au mulţimea cifrelor din scrierea lor inclusă în mulţimea cifrelor din scrierea lui n.

Date de intrare

Fișierul de intrare odaoni.in conține pe prima linie numărul n.

Date de ieșire

Fișierul de ieșire odaoni.out va conține pe prima linie numărul divizorilor lui n care au mulţimea cifrelor din scrierea lor inclusă în mulţimea cifrelor din scrierea lui n..

Restricții și precizări

  • 1 ≤ n ≤ 1.000.000.000

Exemplu

odaoni.in

12

odaoni.out

3

Explicație

Numărul 12 are divizorii 1,2,3,4,6,12 iar dintre aceştia numai 1,2,12 au mulţimea cifrelor inclusă în mulţimea cifrelor lui 12.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema odaoni:

#include <fstream>

using namespace std;
ifstream f("odaoni.in");
ofstream g("odaoni.out");
int n,i,x,sol,r,v[10],ok;

int main()
{
    f >> n ;
    //cifrele lui n
    x = n ;
    while(x!=0)
    {
        r = x % 10 ;
        v[r] = 1 ;
        x = x / 10 ;
    }
    //divizorii lui n
    sol = 0 ;
    for( i = 1 ; i * i < n ; i++ )
        if( n % i == 0 )
    {
        x = i ;
        ok = 1 ;
        while(x!=0)
        {
            r = x % 10 ;
            if ( v[r]==0 ) ok = 0 ;
            x = x / 10 ;
        }
        sol += ok ;
        x = n / i ;
        ok = 1 ;
        while(x!=0)
        {
            r = x % 10 ;
            if ( v[r]==0 ) ok = 0 ;
            x = x / 10 ;
        }
        sol += ok ;
    }
    if( i * i == n )
    {
        x = i ;
        ok = 1 ;
        while(x!=0)
        {
            r = x % 10 ;
            if ( v[r]==0 ) ok = 0 ;
            x = x / 10 ;
        }
        sol += ok ;
    }
    g << sol ;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2407 odaoni

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2407 odaoni de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!