mickypinata

PROG-T1100: Codes

Jul 31st, 2021 (edited)
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int N = 1e5;
  7. const int PB = 11;
  8.  
  9. int powOfPB[3], num[3], one[1331], two[1331], three[1000];
  10.  
  11. int main(){
  12.  
  13.     powOfPB[0] = 1;
  14.     powOfPB[1] = 11;
  15.     powOfPB[2] = 121;
  16.  
  17.     int nNumber;
  18.     scanf("%d", &nNumber);
  19.     lli cnt = 0;
  20.     for(int i = 1; i <= nNumber; ++i){
  21.         int x;
  22.         scanf("%d", &x);
  23.         num[2] = x / 100 + 1;
  24.         num[1] = x % 100 / 10 + 1;
  25.         num[0] = x % 10 + 1;
  26.  
  27.         // Add Sum: One Digit
  28.         for(int j = 0; j < 3; ++j){
  29.             cnt += one[powOfPB[j] * num[j]];
  30.             ++one[powOfPB[j] * num[j]];
  31.         }
  32.         // Subtract Sum: Two Digits
  33.         for(int j = 0; j < 2; ++j){
  34.             for(int k = j + 1; k < 3; ++k){
  35.                 cnt -= two[powOfPB[j] * num[j] + powOfPB[k] * num[k]];
  36.                 ++two[powOfPB[j] * num[j] + powOfPB[k] * num[k]];
  37.             }
  38.         }
  39.         // Add Sum: Three Digits
  40.         cnt += three[x];
  41.         ++three[x];
  42.     }
  43.     cout << cnt;
  44.  
  45.     return 0;
  46. }
  47.  
Add Comment
Please, Sign In to add comment