fork download
  1. #include <bits/stdc++.h>
  2. #define faster cin.tie(nullptr), cout.tie(nullptr), cin.sync_with_stdio(false), cout.sync_with_stdio(false);
  3. #define f1(n) for( int i=1;i<n;i++)
  4. #define f0(n) for(int i=0;i<n;++i)
  5. #define f0j(n) for(int j=0;j<n;++j)
  6. #define fe(v) for(auto & it:v)
  7. #define yes cout<<"YES\n";
  8. #define no cout<<"NO\n";
  9. #define f first
  10. #define s second
  11. #define ll long long
  12. #define d double
  13. #define ld long double
  14. #define INF 1e10
  15. #define all(v) v.begin(),v.end()
  16. const int Mod = 1e9+7;
  17. const ll N = 10;
  18. using namespace std;
  19.  
  20. void maka () {
  21. #ifndef ONLINE_JUDGE
  22. freopen("input.txt", "r", stdin);
  23. freopen("output.txt", "w", stdout);
  24. #endif
  25. }
  26. ll mul(ll a , ll b, ll m = Mod){
  27. return (((a%m)*(b%m))%m);
  28. }
  29. ld power(ld b ,ll p){
  30. ld res =1;
  31. while(p){
  32. if(p&1)res = res*b;
  33. b = b*b;
  34. p/=2;
  35. }
  36.  
  37. return res;
  38. }
  39. ll add(ll a,ll b){
  40. return ((a%Mod) + (b%Mod))%Mod;
  41.  
  42. }
  43.  
  44. struct DSU {
  45. vector<int> p, r;
  46.  
  47. DSU(int n) {
  48. p.resize(n + 1);
  49. r.resize(n + 1, 0);
  50. for (int i = 1; i <= n; ++i)
  51. p[i] = i;
  52. }
  53.  
  54. int get(int a) {
  55. if (a == p[a]) return a;
  56. return p[a] = get(p[a]);
  57. }
  58.  
  59. bool join(int a, int b) {
  60. a = get(a);
  61. b = get(b);
  62. if (a != b) {
  63. if (r[a] < r[b]) {
  64. swap(a,b);
  65. }
  66. p[b]=a;
  67. if (r[a]==r[b])r[a]++;
  68. return true;
  69. }
  70. return false;
  71. }
  72. };
  73. ll fact[N], modinv[N];
  74.  
  75. void pre() {
  76. fact[0] = 1;
  77. for (int i = 1; i < N; i++)
  78. fact[i] = i * fact[i - 1] ;
  79. modinv[N - 1] = fact[N - 1];
  80. for (int i = N - 2; i >= 0; i--)
  81. modinv[i] = (i + 1) * modinv[i + 1];
  82. }
  83.  
  84.  
  85. void solve (){
  86. string n;
  87. cin>>n;
  88.  
  89. vector<int> digits;
  90. fe(n){
  91. digits.push_back(it-'0');
  92. }
  93. ld t = fact[n.length()];
  94. sort(all(digits));
  95. ld probale = 0;
  96. f0(n.length()){
  97. ld larger = digits.size()- (lower_bound(all(digits),n[i]-'0')-digits.begin()) -1;
  98.  
  99. ld res = larger * fact[digits.size()-1];
  100. digits.erase(lower_bound(all(digits),n[i]-'0'));
  101.  
  102. probale+=res;
  103. }
  104.  
  105. ld ans =0;
  106. if(probale)
  107. ans = powl(1/(ld)(t) +1,probale-1) * 1/(ld)(t);
  108. cout<<fixed<<setprecision(9)<<ans<<'\n';
  109. }
  110.  
  111.  
  112. int main(){
  113. faster
  114. maka();
  115. pre();
  116. int t = 1;
  117. cin>>t;
  118. while(t--){
  119. solve();
  120. }
  121. }
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
0.000000000