RozKoduj się!

Zapraszam do doskonalenia swoich koderskich umiejętności.

Nie jesteś zalogowany na forum.

#1 2015-09-06 21:10:53

Hiraki
Administrator
Dołączył: 2015-08-23
Liczba postów: 7
Windows 8.1Chrome 46.0.2490.13

[C++] Czy umiesz potęgować?

Dla danych dwóch liczb naturalnych a i b, wyznaczyć ostatnią cyfrę liczby ab.

Zadanie
Napisz program, który:
wczyta ze standardowego wejścia: podstawę a oraz wykładnik b,
wyznaczy ostatnią cyfrę liczby a^b,
wypisze wynik na standardowe wyjście.

Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤10), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku podany jest w jednym wierszu, zawierającym dwie liczby naturalne a i b oddzielone pojedynczym odstępem (spacją), takie, że (1 ≤ a,b ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia Twój program powinien wypisać (w osobnej linii dla każdego przypadku z wejścia) cyfrę jedności liczby a^b zapisanej dziesiętnie.

Przykład
Dla danych wejściowych:
2
2 3
3 3
poprawną odpowiedzią jest:
8
7

Kod:

#include <iostream>

using namespace std;

int jednosc(unsigned long long, unsigned long long);

int main()
{
    int n;
    unsigned long long a, b;
    cin >> n;

    for(int i=0; i<n; i++)
    {
        cin >> a >> b;
        cout << jednosc(a, b) << endl;
    }

    return 0;
}

int jednosc(unsigned long long a, unsigned long long b)
{
    if(b==0) return 1;
    else if(b==1) return (a%10);
    else if((a%10)==1) return 1;
    else if((a%10)==5) return 5;
    else if((a%10)==6) return 6;
    if( ((a%10)==2) || (a%10)==3 || ((a%10)==7) || ((a%10)==8) ) b=(b%4)+4;
    if( ((a%10)==4) || (a%10)==9 ) b=(b%2)+2;
    a%=10;
    int x=a;

    for(unsigned int i=1; i<b; i++)
    {
        x*=a;
        x%=10;
    }
    return x;
}

Offline

Użytkowników czytających ten temat: 0, gości: 1
[Bot] ClaudeBot

Stopka

Forum oparte na FluxBB

Darmowe Forum
kikidsntluvya - neksiurpg - prohero - spoke-forum - frestyler4fun