Wypisanie wszystkich różnych 3 lub 4 cyfrowych liczb

0

Hej, jeszcze jedno pytanie. Chciałem napisac program, ktory wypisze mi wszystkie rozne 3 lub 4 cyfrowe liczby. Ale cos nie bardzo mi to dziala, wypisuje mi 648 liczb a powinien 720 zgodnie ze wzorem mat:

    int i=100, ile = 0;
    while(i<1000)
    {
        int dziesietna = i % 10;
        int setna = (i % 100) / 10;
        int tysieczna = (i % 1000) / 100;

        if((dziesietna != setna) && (setna != tysieczna) && (tysieczna != dziesietna))
        {
            ile ++;
            printf("%d%d%d\n", tysieczna, setna, dziesietna);
        }
        i ++;
    }
0

Może pojedź do tego z innej strony:liczba=tysieczna*100+setna*10+dziesietna;

0

a można poprosić ciut większą podpowiedź?

0

Nie rozumiem w sumie nic :-/ Tak na chłopski rozum, to powinno być tak: biorę po kolei każdą liczbę 3 cyfrową (to robi moja pętla), potem rozbijam ją na 3 cyfry, jeśli są różne, to mam 3 cyfrową liczbę, w której cyfry nie powtarzają się. Tak też chciałem to napisać, jak liczę ze wzoru na wariacje bez powtorzen n = 10, k = 3 to mi wychodzi, że powinno być 720 takich liczb, a mój program wypisuje tylko 648.

0
mmax napisał(a):

ze wzoru na wariacje bez powtorzen n = 10, k = 3 to mi wychodzi, że powinno być 720 takich liczb, a mój program wypisuje tylko 648.

Zmień w swoim kodzie i=100 na i=0 to dostaniesz swoje 720

0

Ok, ale wówczas mam też 2 cyfrowe.. a chciałem tylko 3 cyfrowe liczby ktore będą miały różne cyfry :-P

0

No to masz tych liczb tylko 648.

  1. Na pierwszym miejscu 9 (bo nie może być 0)
  2. Na drugim miejscu 9 (bo nie ta co wybrana poprzednio ale może być już 0)
  3. Na trzecim miejscu 8 bo żadna z dwóch wyżej wybranych
    998=648

Poza tym twój kod można nieco przyspieszyć:

#include <iostream>
using namespace std;
int main()
  {
   int i=0;
   for(int a=1;a<=9;++a)
      for(int b=0;b<=9;++b)
         if(a!=b)
            for(int c=0;c<=9;++c)
               if((a!=c)&&(b!=c))
                  //for(int d=0;d<=9;++d)
                     //if((a!=d)&&(b!=d)&&(c!=d))
                        ++i;
   cout<<i<<endl;
   return 0;
  }

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