fork download
  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.  
Success #stdin #stdout 0s 15240KB
stdin
2
11
5 2 8 1 6 2
3 5 0 2
11
4 1 3 7 6
3 1 7 2
stdout
764
5517
3