Salut! Imi poate spune cineva de ce codul urmator imi da doar 90 de puncte pe pbinfo? Problema este #61, afisare divizori comuni
#include
using namespace std;
int main()
{
int a,b,i;
cin>>a>>b;
if(a>b)
{for(i=1;i<=a;i++)
{
if((a%i==0) && (b%i==0))
cout<
}}
else
{
for(i=1;i<=b;i++)
{
if((b%i==0) && (a%i==0))
cout<
}
}
}
Daca nu apar toate semnele, este vina site-ului Brainly
La comentarii daca scrii cod si folosesti semnul < , atunci tr. sa-l separi de caracterele vecine prin spatiu si nu va trunchia codul...
asa nu merge...
for(i=1; i<=a/2; i++)
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int v[500];
int main()
{
int a, b, t, len=0 ;
cin >> a >> b;
if (a>b) { t=a; a=b; b=t; }
for (t=1; t*t<a; ++t)
{
if (a%t==0)
{
if (b%t==0) { cout << t << " ";
if (b%(a/t)==0) { ++len; v[len]=a/t; } }
else if (b%(a/t)==0) { ++len; v[len]=a/t; }
}
}
if (t*t==a && b%t==0) cout << t << " ";
for (t=len; t>=1; --t) cout << v[t] << " ";
cout << endl;
return 0;
}
Explicație:
Pentru 24 36, divizorii comuni sunt 1 2 3 4 6 12
Algoritmul dat ii gaseste eficient in ordinea 1 12 2 6 3 4
deoarece afisarea este in crestere, prima jumatate de divizori se afiseaza direct, 1 2 3, iar a doua jumatate se memorizeaza intr/un vector, 12 6 4
Vecorul apoi e afisat in ordinea inversa 4 6 12
Astfel obtinem 1 2 3 4 6 12