Facebook
From KAI, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 129
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5. using PI = pair<int,int>;
  6.  
  7. vector<int> get_digits(int n) {
  8.     vector<int> digits;
  9.  
  10.     while(n) {
  11.         digits.push_back(n);
  12.         n/=10;
  13.     }
  14.  
  15.     return digits;
  16. }
  17.  
  18. int get_digit_sum(int n) {
  19.     vector<int> digits = get_digits(n);
  20.     return accumulate(digits.begin(), digits.end(), 0);
  21. }
  22.  
  23. int main() {
  24.     ios_base::sync_with_stdio(false);
  25.     cin.tie(0);
  26.  
  27.     #ifndef ONLINE_JUDGE
  28.     freopen("input.txt", "r", stdin);
  29.     #endif
  30.    
  31.    
  32.  
  33.     int t;
  34.     cin>>t;
  35.  
  36.    
  37.     while(t--) {
  38.         int n;
  39.         cin>>n;
  40.  
  41.         vector<int> digits = get_digits(n);
  42.  
  43.         int ret1 = 0, ret2 = 0;
  44.         int mul = 1;
  45.         for (auto d: digits) {
  46.             if(d % 2 == 0) {
  47.                 ret1 += (d / 2) * mul;
  48.                 ret2 += (d / 2) * mul;
  49.             }
  50.             else {
  51.                 int dsum1 = get_digit_sum(ret1), dsum2 = get_digit_sum(ret2);
  52.  
  53.                 if(dsum1 == dsum2) {
  54.                     ret1 += (d / 2) * mul;
  55.                     ret2 += (d - d / 2) * mul;
  56.                 }
  57.                 else if(dsum1 == dsum2 + 1) {
  58.                     ret1 += (d / 2) * mul;
  59.                     ret2 += (d - d / 2) * mul;
  60.                 }
  61.                 else if(dsum2 == dsum1 + 1) {
  62.                     ret1 += (d - d / 2) * mul;
  63.                     ret2 += (d / 2) * mul;
  64.                 }
  65.             }
  66.  
  67.             mul = mul * 10;
  68.         }
  69.  
  70.         assert(ret1 + ret2 == n);
  71.         cout<<ret1<<" "<<ret2<<endl;
  72.  
  73.     }
  74.  
  75.     return 0;
  76. }