złe wyjście programu

złe wyjście programu
R0
R0
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
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

Kopiuj
 
#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;
}



edytowany 3x, ostatnio: removed001
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:13 dni
0

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
R0
R0
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

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

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:13 dni
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
R0
R0
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

no rozumiem, chyba się poddam z tym zadaniem

n0name_l
Z takim podejsciem nawet dobrym operatorem miotly nie bedziesz.
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:13 dni
1

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

Kopiuj
#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;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
_13th_Dragon
Owszem nikt od ciebie nie wymaga 5-wierszowych rozwiązań ale wystarczy trochę pomyśleć i ....
spartanPAGE
Właśnie przepchnąłeś go dalej w olimpiadzie gimnazjalistów :P
_13th_Dragon
Nie sądzę, za słaby kod, da się jeszcze przyśpieszyć i to sporo.
spartanPAGE
W limitach czasowych się mieści, robi co ma robić :P Więcej nie potrzebuje; Wszystkie zadania są na podobnym poziomie trudności.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.