• Source
    1. #include <iostream>
    2.  
    3. using namespace std;
    4.  
    5. int main()
    6. {
    7. /*
    8.   liczbaTestow- liczba testow
    9.   nliczba - liczba pierwsza, znacznik pierscienia
    10.   kjeden - ilosc wspolczynnikow
    11.   wspDziel- dlougsc wielomianu przez ktory sie dzieli
    12.   *glowny- tablica zaweirajaca wspolczynniki wielomianu
    13.   *dzielony- tablica zawierajaca dzielniki wielomianu przez ktory sie dzieli
    14.   *wynik - tablica zawieracjaca wynik
    15.   *mnozeniaWynik - wynik mnozenia
    16.   */
    17. int liczbaTestow, nliczba, kjeden, wspDziel, glowny, dzielony, wynik, mnozeniaWynik;
    18.  
    19. cin>>liczbaTestow; //wprowadzam liczbe testow
    20. for(int keppo=0; keppo<liczbaTestow; keppo++) //wykonuje dzialanie okreslona ilosc razy
    21. {
    22. cin>>nliczba; //wporwadzam znacznik pierscienia
    23. cin>>kjeden; //podaje ilosc wspolczynnikow
    24. int glowny[kjeden]; // tablica z funcja wielkosci funkcji bazowej
    25. int mnozeniaWynik[kjeden];
    26.  
    27. for(int i=0; i<kjeden; i++) //zapisuje wspolczynniki
    28. {
    29. cin>>glowny[i];
    30. }
    31. cin>>wspDziel; //podaje liczbe wspolcznnikow dzielonego wileomanu
    32.  
    33. int dzielony[wspDziel]; //tworze tablice na wyniki ----
    34.  
    35. for(int i=0; i<wspDziel; i++) //zapisuje w niej wyniki
    36. {
    37. cin>>dzielony[i];
    38. }
    39. int wynik[kjeden-wspDziel+1]; // tworze tablice wyniku
    40. for(int i=0; i<kjeden-wspDziel+1; i++) //przejezdza przez wiersze
    41. {
    42. for(int iWonder=0; iWonder<nliczba; iWonder++) // jedzie po pierscieniu
    43. {
    44. if(glowny[i]==dzielony[0]*iWonder%nliczba) // szuka dzielenia
    45. {
    46. wynik[i]=iWonder; // zapisuje wyraz pierscienia
    47. }
    48. }
    49.  
    50. for(int j=0; j<wspDziel; j++) // mnozy
    51. {
    52. mnozeniaWynik[j]=wynik[i]*dzielony[j]%nliczba;
    53. }
    54.  
    55. for(int j=0; j<wspDziel; j++) //odejmuje je od siebie
    56. {
    57. if(0>glowny[j+i]-mnozeniaWynik[j])
    58. {
    59. glowny[j+i]=(glowny[j+i]-mnozeniaWynik[j])%nliczba+nliczba;
    60. }
    61. else
    62. {
    63. glowny[j+i]=(glowny[j+i]-mnozeniaWynik[j])%nliczba;
    64. }
    65. }
    66. }
    67. for(int i=0; i<kjeden-wspDziel+1; i++) //podaje odp
    68. {
    69. cout<<wynik[i];
    70. }
    71. cout<<endl;
    72. for(int i=0; i<kjeden; i++)
    73. {
    74. if(glowny[i]!=0)
    75. {
    76. cout<<glowny[i];
    77. }
    78. }
    79. // cout<<endl;
    80. }
    81. return 0;
    82. }
    83.