Să se afiseze toate numerele naturale mai mici decât n care au propietatea că pătratul și cubul fiecăruia au cel puțin o cifră comună ; pentru fiecare număr găsit să se afiseze câte cifre sunt comune și care sunt acelea .
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <bitset>
using namespace std;
int pow(int e, int p)
{
int sol = 1;
while(p) {
if(p & 1) sol *= e;
e *= e;
p /= 2;
}
return sol;
}
void sol(int a, int b, int val)
{
int nr = 0;
bool ok = false;
bitset<10> cfrA, cfrB;
while(a) cfrA[a % 10] = true, a /= 10;
while(b) cfrB[b % 10] = true, b /= 10;
for(int i = 0; i < 10; i++)
if(cfrA[i] && cfrB[i])
{ ok = true; break; }
if(ok) {
cout << "Numarul este: " << val << " <=> Cifrele comune sunt: ";
for(int i = 0; i < 10; i++)
if(cfrA[i] && cfrB[i])
cout << i << ' ', nr++;
cout << " <=> Numarul de cifre comune este: " << nr << '\n';
}
}
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
sol(pow(i, 2), pow(i, 3), i);
return 0;
}
#include <bitset>
using namespace std;
int pow(int e, int p)
{
int sol = 1;
while(p) {
if(p & 1) sol *= e;
e *= e;
p /= 2;
}
return sol;
}
void sol(int a, int b, int val)
{
int nr = 0;
bool ok = false;
bitset<10> cfrA, cfrB;
while(a) cfrA[a % 10] = true, a /= 10;
while(b) cfrB[b % 10] = true, b /= 10;
for(int i = 0; i < 10; i++)
if(cfrA[i] && cfrB[i])
{ ok = true; break; }
if(ok) {
cout << "Numarul este: " << val << " <=> Cifrele comune sunt: ";
for(int i = 0; i < 10; i++)
if(cfrA[i] && cfrB[i])
cout << i << ' ', nr++;
cout << " <=> Numarul de cifre comune este: " << nr << '\n';
}
}
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
sol(pow(i, 2), pow(i, 3), i);
return 0;
}
Alte întrebări interesante
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Istorie,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă