Advertisement
Josif_tepe

Untitled

Feb 23rd, 2025
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. //    ifstream cin("1029ET_8.IN");
  10. //    ofstream cout("in.txt");
  11.     ios_base::sync_with_stdio(false);
  12.    
  13.     // x % k = y
  14.    
  15.    
  16.    
  17.    
  18.     int n,k;
  19.     cin>>n>>k;
  20.    
  21.     int x[n];
  22.     int cnt=0;
  23.     int maks =0 ;
  24.     for(int i = 0;i<n;i++){
  25.       cin>>x[i];
  26.         maks = max(maks, x[i]);
  27.     }
  28.     vector<int> counter(1e6 + 10, 0);
  29.     for(int i = 0;i<n;i++){
  30.       counter[x[i]]++;
  31.     }
  32.     for(int i = 0; i < n; i++) {
  33.         int res = 0;
  34.         if(x[i] == k) {
  35.             for(int j = 0; j < n; j++) {
  36.                 if(i != j and x[j] >= x[i]) {
  37.                     if(x[i] % x[j] == k){
  38.                         res++;
  39.                     }
  40.                 }
  41.             }
  42.         }
  43.         else {
  44.             int num = x[i] - k;
  45.             if(num <= 0) {
  46.                 for(int j = 0; j < n; j++) {
  47.                     if(i != j and x[i] == x[j]) {
  48.                         res++;
  49.                     }
  50.                 }
  51.             }
  52.             else {
  53. //                cout << x[i] << ": ";
  54.                 for(int j = 1; j <= sqrt(num) + 1; j++) {
  55.                     if(num % j == 0) {
  56. //                        cout << j << endl;
  57.                         if(x[i] % j == k) {
  58.                            
  59.                             if(j != x[i]) {
  60.                                 res += counter[j];
  61.                             }
  62.                             else {
  63.                                 res += counter[j] - 1;
  64.                             }
  65.                         }
  66.                            
  67.                             if(j != num / j) {
  68.                                 int del = num / j;
  69. //                                cout << del << " " ;
  70.                                 if(x[i] % del == k) {
  71.                                     if(del != x[i]) {
  72.                                         res += counter[del];
  73.                                     }
  74.                                     else {
  75.                                         res += counter[del] - 1;
  76.                                     }
  77.                                 }
  78.                            
  79.                         }
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.         cout << res << " ";
  85.     }
  86.     return 0;
  87.     if(n<=2000){
  88.       for(int i = 0;i<n;i++){
  89.         for(int j = 0;j<n;j++){
  90.           if(x[i]%x[j]==k && i!=j){
  91.             cnt++;
  92.           }
  93.         }
  94.       cout<<cnt<<" ";
  95.       cnt=0;
  96.       }
  97.       return 0;
  98.     }
  99.    
  100.    
  101.     if(k == 0) {
  102.         for(int i = 0; i < n; i++) {
  103.             int res = 0;
  104.             int sq = sqrt(x[i]);
  105.            
  106.             for(int j = 1; j <= sq; j++) {
  107.                 if(x[i] % j == 0) {
  108.                     res += counter[j];
  109.                    
  110.                     if(j != x[i] / j) {
  111.                         if(x[i] / j == x[i]) {
  112.                             res += counter[x[i] / j] - 1;
  113.                         }
  114.                         else {
  115.                             res += counter[x[i] / j];
  116.                         }
  117.                     }
  118.                 }
  119.             }
  120.            
  121.             cout << res << " ";
  122.            
  123.         }
  124.     }
  125.     else {
  126.         for(int i = 0; i < n; i++) {
  127.             int res = 0;
  128.             for(int j = 1; j <= maks; j++) {
  129.                 if(x[i] % j == k) {
  130.                     if(j == x[i]) {
  131.                         res += counter[j] - 1;
  132.                     }
  133.                     else {
  134.                         res += counter[j];
  135.                     }
  136.                 }
  137.             }
  138.             cout << res << " ";
  139.            
  140.  
  141.         }
  142.     }
  143.     return 0;
  144. }
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement