Szalona liczba C++

pulpet123
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 21 paź 2009, o 19:12
Płeć: Mężczyzna
Lokalizacja: Białystok
Podziękował: 4 razy

Szalona liczba C++

Post autor: pulpet123 »

mam zadanie o treści
Dodatnią liczbę całkowitą nazywamy szaloną, jeśli zawiera co najwyżej i cyfr równych i (dla i=1..9) (innymi słowy, jeśli co najwyżej jedna z jej cyfr to 1 oraz jeśli co najwyżej 2 z jej cyfr to 2 itd.).

Twoim zadaniem będzie znalezienie dla danych dwóch liczb całkowitych a,b liczby szalonych liczb nie mniejszych niż a oraz nie większych niż b.
Zadanie

Napisz program, który:
wczyta ze standardowego wejścia liczby naturalne a,b,
wypisze na standardowe wyjście liczbę szalonych liczb z przedziału [a,b].
Wejście

W jedynym wierszu wejścia znajdują się dwie liczby całkowite a, b
(1<=a<=b<=2000 000 000) oddzielone pojedynczym odstępem.
Wyjście

W jedynym wierszu wyjścia należy wypisać liczbę szalonych liczb z przedziału [a,b].
Przykład

Dla danych wejściowych:
1 11

poprawną odpowiedzią jest:
10
napisalem

Kod: Zaznacz cały

#include<iostream>
using namespace std;
int t[10];
int liczba(int a)
{
    int c,d=0;
    while(a>0)
    {
        c=a%10;      
        t[c]++;
        a=a/10;      
    }
    for(int i=1;i<10;i++)
    {
            if(t[i]<=i)
                       d++;
    }
    if(d==9) return 1;
    else return 0;
                           
}
int main()
{
    int a,b,e=0;
    cin>>a>>b;
    for (int i=a;i<=b;i++)
    {
        e=e+liczba(i);
    }
    cout<<e;
    getchar();getchar();return 0;
}
mam gdzieś błąd tylko nie wiem gdzie
mógłby mi ktoś pomóc
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

Szalona liczba C++

Post autor: matshadow »

Kod: Zaznacz cały

int oblicz(int i)
{
    int c=0;
    int tab[10]={0};
    while(i>0)
    {
        c=i%10;
        tab[c]++;
        i/=10;
    }
    c=0;
    for(int g=1; g<10; g++)
    {
        if(tab[g]<=g) c++;
    }
    return (c==9);
}
tablicę musisz wyzerować zawsze w funkcji, bo jak np. nie będzie żadnej cyfry 5, a nie będzie wyzerowana, to w tab[5] się przypadkowe wartości chowają.
ODPOWIEDZ