Napisz program w C++ obliczający iloczyn n dowolnych liczb parzystych podzielnych przez 3
assimar
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(); }
0 votes Thanks 0
mcprok
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)
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();
}
#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;
}