=================================== GRUPA 1. ======================== //--------------------------------- Zadanie 1. ---------------------- // suma cyfr liczby n int sumacyfr(int n){ int s=0, k; while (n>0){ k=n%10; s=s+k; // s=s+k*k dla sumy kwadratow, p=p*k dla iloczynu cyfr (int p=1) n=n/10; } return s; } // liczba powstająca z odwrócena cyfr liczby n int odwroccyfry(int n){ int w=0, k; while (n>0){ k=n%10; w=w*10+k; n=n/10; } return w; } // podzielność liczby przez sumę jej cyfr for (n=a; n<=b; ++n){ if (n % sumacyfr(n) == 0) printf("%i\n", n); } // nwp liczby n i m powstałej z odwrócenia kolejnosci jej cyfr for (n=1000; n<=9999; ++n) m = odwroccyfry(n); if ((n!=m) && (nwp(n,m)>=1000)) printf("%i - %i\n", n,m); } //--------------------------------- Zadanie 2. ---------------------- // rozwiązanie rownania wzgl. p,q,r w zadanym przedziale [a,b] // można użyć zmiennych p,q,r typu long long int by ich potęgi nie przekroczyły // dopuszczalnego zakresu for (p=a; p<=b; ++p){ for (q=a; q<=b; ++q){ for (r=a; r<=b; ++r){ if (p*p+q*q*q==r*r*r*r) { printf("....\n", p,q,r); } } } } // dla rownania p^3+q^3=r^2 mozna przyspieszyć działanie drugiej pętli for (p=a; p<=b; ++p){ for (q=p; q<=b; ++q){ .... } } // zamiana jednostek czasowych: s = wczytana liczba sekund sek=s%60; s=s/60; min=s%60; s=s/60; h=s%24; s=s/24 d=s%27 s=s/27; m=s%12; l=s/12; if (l>0) {printf("%i lat, ", l);} if (m>0) {printf("%i miesiecy, ", m);} if (d>0) {printf("%i dni, ", d);} if (h>0) {printf("%i godzin, ", h);} ... //--------------------------------- Zadanie 3. ---------------------- // dodawanie ułamków: p,q oraz r,s to wczytane dane dla p/q+r/s a=p*s+q*r; b=q*s; c=nwp(a,b); if (b!=c){ printf("%i/%i + %i/%i = %i/%i\n", p,q,r,s, a/c, b/c); } else { printf("%i/%i + %i/%i = %i\n", p,q,r,s, a/c); } ===================================== GRUPA II ===================== //---------------------------------- Zadanie 1. --------------------- // suma właściwych podzielników liczby n int sumapodz(int n){ int s=1,k; for (k=2; k<=n/2; ++k){ if (n%k==0) {s+=k;} } return s; } // liczby doskonałe for (n=2; n<=100000; ++n){ if (n==sumapodz(n)) {printf("%i\n", n);} } // liczby zaprzyjaznione for (n=2; n<=100000; ++n){ m=sumapodz(n); if ((m>n)&&(sumapodz(m)==n)) {printf("Zaprzyjaznione %i i %i\n", n,m);} } // maksymalna suma wlasciwych podzielnikow ms=0; for (n=2; n<=10000; ++n){ s=sumapodz(n); if (s>ms) { ms=s; mn=n; } } printf(".... ", mn,ms); //--------------------------------- Zadanie 2. --------------- // losowanie n kart z talii int T[32]={0}; // losowanie k=0; while (k0, F(pi)>0 oraz F(pi/2)<0; double F(double x){ return 1/(1+x*x)-sin(x); } double rozw(float a, float b, double eps){ double c; while (fabs(a-b)>eps){ c=(a+b)/2; if (F(a)*F(c)<0) { b=c; } else { a=c; } } return c; } // dwa rozwiązania dla wywołań x1=rozw(0.0, 1.57, 1.0E-10); x2=rozw(1.57, 3.14, 1.0E-10);