złe wyjście programu

0

Złe wyjście. Może ktoś pomóc?

            Naukowcy z całego świata postanowili wybrać 

Liczbę Roku 2012. Ustalili, że wybór odpowiedniej liczby powinien mieć
coś wspólnego z podzielnością. Stworzyli długą listę liczb, które ich
zdaniem byłyby dobrymi kandydatami na dzielniki Liczby Roku. Ponieważ
każdy naukowiec dopisywał swoje liczby nie oglądając się na innych, na
liście tej mogą występować powtórzenia. Wydawałoby się, że wybór Liczby
Roku powinien być teraz łatwy, ale doradcy do spraw PR doszli do
wniosku, że przyjęcie bardzo dużej wartości byłoby niekorzystne.
Naukowcy muszą wybrać liczbę nie większą niż milion. Rozważają
kandydatury różnych ciekawych liczb i dla każdej z nich chcą się
dowiedzieć, ile liczb z przygotowanej listy jest jej dzielnikami.

Wejście

W
pierwszej linii wejścia znajduje się liczba naturalna n
(1<=n<=200000), określająca długość listy potencjalnych dzielników
Liczby Roku 2012. W kolejnej linii podane są elementy tej listy, będące
liczbami naturalnymi z zakresu od 1 do 1000. W trzeciej linii znajduje
się liczba naturalna m (1<=m<=10), oznaczająca liczbę rozważanych
kandydatów na Liczbę Roku. W kolejnych m liniach znajdują się te liczby
(całkowite, z zakresu od 1 do 1000000).

Wyjście

Dla każdego kandydata na Liczbę Roku wypisz w osobnej linii, ile liczb z
listy przygotowanej przez naukowców jest jego dzielnikami.

Przykład

Wejście

5
2 1 7 3 2
2
8
11

Wyjście

3
1

 
#include <iostream>
using namespace std;
int main()
{
    int suma[1000],a;
    int n, t1[ 200000 ], y, t2[ 1000 ];

    cin >> n;

    for( int i = 1; i <= n; i++ )
        {
        cin >> t1[ i ];
        }
    cin >> y;

    for( int j = 1,a=1; j <= y; j++ ,a++)
    {
        suma[a]=0;



        cin >> t2[ j ];

        for( int i = 1; i <= n; i++ )

            {

            if( t2[ j ] % t1[ i ] == 0 )

                {
                suma[a] = suma[a] + 1;

                }

            }
cout << suma[a];// zastosowałem to w celu sprawdzenia sumy, tutaj wynik sumy jest poprawny
    }
    for(a=1;a=10000;a++)
    {

        cout << suma[a] << endl;// a tu wynik sumy zawsze wychodzi 0, nie wiem czemu
        if(suma[a]==0){
                break;}
    }
    return 0;
}



0

Wywal to i napisz po ludzku uwzględniając to: http://pl.wikipedia.org/wiki/Najmniejsza_wsp%C3%B3lna_wielokrotno%C5%9B%C4%87

0

ale po co zmieniać, jak pewnie wystarczy coś zmienić i będzie ok

0

Może, tylko znalezienie tego co trza zmienić aby zadziałało to jest jakieś 10 razy bardziej czasochłonne niż napisanie od nowa po ludzku i poprawnie.

0

no rozumiem, chyba się poddam z tym zadaniem

1

Może mała demonstracja, poniższy kod poprawnie rozwiązuje podane zadanie:

#include <iostream>
using namespace std;

unsigned N,div[1001]={0};
int main()
  {
   cin>>N; for(unsigned v,n=0;n<N;++n,++div[v]) cin>>v;
   cin>>N; for(unsigned v,s=0;(N--)&&(cin>>v);cout<<s<<endl,s=0) for(unsigned i=1;i<=v;++i) if((div[i])&&(!(v%i))) s+=div[i];
   return 0;
  }

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