potegowanie-wynik cyfra jednosci

Odpowiedz Nowy wątek
2014-12-30 13:10
0

Napisałem program który wyświetla cyfrę jedności po wykonaniu potegowania zakres liczb wynosi (1 ≤ a,b ≤ 1 000 000 000). Testowalem go na wiele sposobów, zawsze wyswietla dobre wyniki, ale na stronie niechce mi go zaliczyc, może ktoś ma jakieś sugestie??

 #include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    long long int n,wynik,wynik1,wynik2,wynik3,a,b;
    cin>>n;
    unsigned int tab[n],tmp;
    for(unsigned int i=0;i<n;i++)
        {
            cin>>a>>b;
          if(b%4==0)
          {
              wynik=a*a*a*a;
              tab[i]=wynik%10;
          }
          else if(b%4==1)
          {
               wynik1=a;
              tab[i]=wynik1%10;
          }
            else if(b%4==2)
          {
               wynik2=a*a;
              tab[i]=wynik2%10;
          }
             else if(b%4==3)
          {
              wynik3=a*a*a;
              tab[i]=wynik3%10;
          }
 
        }
        for(int i=0;i<n;i++)
            cout<<tab[i]<<endl;
    return 0;
}
 

Pozostało 580 znaków

2014-12-30 13:20

1 ≤ a*a*a*a ≤ 10E36


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-30 13:36
0

Liczby jedności zmieniają się cyklicznie podczas potęgowania. Nie musisz znać całego wyniku, żeby określić cyfrę jedności. Nie musisz ich też przechowywać w tablicy, możesz od razu wypisywać na wyjście


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf

Pozostało 580 znaków

2014-12-30 13:48
1

Wystarczy tyle:

#include <cstdio>
using namespace std;
const char tb[]="0161656161012345678901496569410187456329";
 
int main()
  {
   unsigned n,a,b;
   for(scanf("%u",&n);n--;printf("%c\n",tb[10*(b&3)+(a%10)])) scanf("%u%u",&a,&b);
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Program działa bezbłędnie, ale nie wiem czemu mój nie dziala domyślam sie, że wyżej chodziło o zbyt duzą liczba po wymnożeniu wynik=aaa*a; - Reclab 2014-12-30 14:40
czy to jest jedyny mój błąd - Reclab 2014-12-30 14:42
Dodaj tuż po wczytaniu a%=10; to ci pokaże. Magazynowanie danych też jest właściwie błędem. - _13th_Dragon 2014-12-30 14:47
Dzięki wielkie działa wszystko - Reclab 2014-12-30 15:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0