fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct Tree
  4. {
  5. int data;
  6. Tree* left;
  7. Tree* right;
  8. Tree(int key)
  9. {
  10. data=key;
  11. left=nullptr;
  12. right=nullptr;
  13. }
  14. };
  15. Tree* insert(Tree* root,long long data)
  16. {
  17. if(root==nullptr)
  18. return new Tree(data);
  19. if(root->data<data)
  20. {
  21. root->right=insert(root->right,data);
  22. }
  23. else
  24. {
  25. root->left=insert(root->left,data);
  26. }
  27. return root;
  28. }
  29. long long noofdigits(long long r)
  30. {
  31. long long c=0;
  32. while(r>0)
  33. {
  34. c++;
  35. r/=10;
  36. }
  37. return c;
  38. }
  39. long long sum(Tree* root,long long num)
  40. {
  41. if(root==nullptr)
  42. return 0;
  43. long long r=root->data;
  44. num=root->data+num*pow(10,noofdigits(r));
  45. num=num%1000000007;
  46. if(root->left==nullptr && root->right==nullptr)
  47. {
  48. return num%1000000007;
  49. }
  50. return sum(root->left,num)+sum(root->right,num);
  51. }
  52. int main() {
  53. int t;
  54. cin>>t;
  55. while(t--)
  56. {
  57. long long n;
  58. cin>>n;
  59. long long a[n];
  60. for(long long i=0;i<n;i++)
  61. {
  62. cin>>a[i];
  63. }
  64. Tree* root=nullptr;
  65. for(long long i=0;i<n;i++)
  66. {
  67. root=insert(root,a[i]);
  68. }
  69. long long num=0;
  70. long long ans=sum(root,num);
  71. cout<<ans%1000000007<<endl;
  72. }
  73. return 0;
  74. }
Success #stdin #stdout 0s 5288KB
stdin
1
6
4 1 9 5 7 9
stdout
49620