fbpx

Problema #2407 – odaoni – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>
using namespace std;
ifstream cin("odaoni.in");
ofstream cout("odaoni.out");
bool  f[15];
int cnt;
int main()
{
   int n;
   cin >> n;
   int aux = n;
   while(aux!=0)
   {
       f[aux%10]=1;
       aux /= 10;
   }
   for(int j = 1 ; j*j <= n ; j++)
   {
       if(n%j==0)
       {
           int x = j , ok = 0 , y = n/j;
           bool fdiv1[11]={0};
           while(x > 0)
           {
               fdiv1[x%10]=1;
               if(f[x%10]==0 && fdiv1[x%10]==1)ok=1;
               x /= 10;
           }
            if(ok==0) cnt++;
           ok = 0;
           bool fdiv2[11]={0};
            while(y > 0)
           {
               fdiv2[y%10]=1;
               if(f[y%10]==0 && fdiv2[y%10]==1)ok=1;
               y /= 10;
           }
            if(ok==0) cnt++;
           if(j*j==n && ok == 0) cnt--;
       }
   }
   cout << cnt;
}
Comentarii

S-ar putea sa iti placa