Facebook
From bgbb, 7 Months ago, written in C++.
Embed
Download Paste or View Raw
Hits: 234
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. int main()
  6. {
  7.     int t; cin >>t;
  8.      int num=1;
  9.     while (t--)
  10.     {
  11.         int x=num++;
  12.         vector <int> v;
  13.         v.push_back(9);
  14.         v.push_back(9);
  15.         int sum=18;
  16.         int lst=9; int i=2;
  17.         if (x<=9) {cout <<x <<"\n"; continue; }
  18.         else if (x<=18) {x-=9; cout <<x <<x <<"\n"; continue;; }
  19.         else
  20.         {while (sum>3 && i%2) lst*=10;
  21.                 v.push_back(lst*10);
  22.                 sum+=v.back();
  23.  
  24.             }
  25.             sum-=v.back();
  26.         }
  27.        
  28.         int digits=i;
  29.  
  30.  
  31.         vector <int> ans;
  32.  
  33.         int add=pow(10, digits/2+digits%2-1);
  34.        
  35.         //  cout <<"add=" &lt;&lt;add &lt;&lt;"sum="&lt;&lt;sum &lt;&lt;endl;
  36.         for (int j=1; j&lt;=digits/2+digits%2; j++)
  37.         {
  38.             int tsum=sum;
  39.             int ah=0; if (j==1) {ah=1; tsum++;}
  40.            
  41.             for (int k=1; k&lt;10; k++)
  42.             {
  43.                 // cout &lt;&lt;"j=" &lt;&lt;j &lt;&lt;endl;
  44.                 if (tsum+add&gt;x) break;
  45.                 tsum+=add; if (tsum==x) ah=k; else ah=k+1;
  46.                 //  cout &lt;&lt;"k=" &lt;&lt;k &lt;&lt;"tsum=" &lt;&lt;tsum &lt;&lt;endl;
  47.             }
  48.            
  49.             ans.push_back(ah);
  50.             add/=10;
  51.             sum=tsum;
  52.         }
  53.         for (auto it: ans) cout &lt;&lt;it;
  54.         if (digits%2) ans.pop_back();
  55.         reverse(ans.begin(), ans.end());
  56.         for (auto it: ans) cout &lt;&lt;it;
  57.         cout &lt;&lt;"\n";
  58.  
  59.  
  60.        
  61.     }
  62. }