Jak zabrać się za to zadanie?

0

Wie ktoś? Wiem, że trzeba jakoś od końca, ale i tak nie mam pomysłu :/

Dla podanego poniżej programu napisanego w języku C podaj jaką liczbę wprowadził na wejściu
użytkownik skoro tekst wyświetlony na konsoli w wyniku uruchomienia programu to 21.

#include <stdio.h>
#include <stdlib.h>
int main(){
 int a=0,b=0,c=1,d=0;
 scanf("%d",&a);
 while(a>0) {
 b = a % 10;
 if (b % 2 == 1)
 d += b;
 else
 d += b * b;
 a /= 10;
 }
 printf("%d",d);
 return 0;
} 
0

Wersja dla leniwych ? Skopiuj to do kompilatora, sprawdz zaleznosci dla roznych liczb lub szukaj takiej by dało 21 :)

0

Jak sie zabrać? Za pomocą głowy. Widzisz że wypisuje d więc patrzysz skad się bierze wartość d ;]

0

robi jednego scanfa. Wiec odpal ten program w petli dla pierwszych stu liczb i zobacz czy bedzie tam gdzies liczba 12.

Albo zrozum dzialanie algorytmu i go opisz slownie

0

Tip: wynik to suma kwadratów wszystkich cyfr parzystych w zmiennej a + wszystkie cyfry nieparzyste.

0

Wiem jakie jest rozwiązanie. Nie chodzi mi to o zrobienie zadania i odłożenie. Chciałbym się dowiedzieć w jaki sposób dojść do tego rozwiązania. Czy niemożność odgadnięcia jest powodem lenistwa czy braku talentu - tego nie wiem. Siedzę nad tym i podobnymi zadaniami, wypisuję sobie na kartce, próbuję to jakoś odtwarzać "od tyłu" i nic nie wychodzi.

Nie pisałbym na forum, gdybym potrafił sam to rozwiązać.

0

No dobra, wiem teraz jak mniej więcej liczy ten kod. Ale tak czy siak nie ma znaczenia czy ktoś wpisze np:
54
45
411111
4311
2222222221
3333333
55551
4500000000000

To wynik i tak wyjdzie 21. Skąd mam wiedzieć w takim razie jaką liczbę wprowadzono na wejściu?

0

Może to rozwiązanie ma więcej odpowiedzi?

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