Odpowiedzi

2009-12-13T15:14:32+01:00
Po pierwsze, aby liczba była parzysta musi w rozkładzie na czynniki posiadać 2, a żeby przez 3 musi posiadać w rozkładzie 3, wynika z tego że liczby spełniające ten warunek są wielokrotnościami 3*2=6,dlatego losujemy dowolną liczbę i mnożymy ją razy 6
Należy tu także zwrócić uwagę iż, iloczyn jest typu unsigned long long, zatem trzeba uważać by zmienna ta nie wyszła poza zakres, dlatego mamy rand()%1000000+1, co gwarantuje nam iż liczba ta będzie maksymalnie równa 100000*6, zmienna unsigned long long ma 8 bajtów czyli może przechować wartości z przedziału <0 ;2^(8*8)= 18446744073709551616>. Podzielmy teraz 18446744073709551616 przez 6000000 = 512409,55760304310044444444444433, zaokrąglamy w dół 512409 i to jest maksymalna wartość n

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
srand(time(0));//włączamy generator liczb losowych;
int n;
cin>>n;
if(n>512409)
{
cout<<"Za duze n";
getch();
return 1;
}
unsigned long long iloczyn=1;
int pomoc;
cout<<"iloczyn liczb ";
for(int i=0;i<n;i++)
{
pomoc=rand()%1000000+1;
cout<<pomoc*6<< " ";
iloczyn = iloczyn *pomoc;
}
iloczyn = iloczyn * 6*n;
cout<<"\nwynosi "<<iloczyn;
getch();
}
Najlepsza Odpowiedź!
2009-12-13T15:39:17+01:00
No to może problem załatwimy tak. dopóki nie będziemy mieć tych n liczb to polecimy pętelką i będziemy mnożyć wielokrotności 6stki. (bo 6 dzieli się przez 3 i jest parzyste)

#include<iostream>
using namespace std;

int main(){
int n,suma,x; cin >> n;
n--;
x=suma=6;
while(n--){
x+=6;
suma*=x;
}
cout << suma << endl;
return 0;
}