fork download
  1. import java.util.*;
  2. class SumaCyfr
  3. {
  4. public static void main(String[] args)
  5. {
  6. long[] nieZera = new long[15];
  7. long[] wyniki = new long[nieZera.length];
  8. for(int i=0;i<nieZera.length;i++)
  9. {
  10. nieZera[i] = policzNieZera(i+1);
  11. wyniki[i] = (nieZera[i]/9)*45;
  12. if(i > 0)
  13. {
  14. wyniki[i] += wyniki[i-1];
  15. }
  16. }
  17. System.out.println(Arrays.toString(nieZera));
  18. System.out.println(Arrays.toString(wyniki));
  19. }
  20. //------------------------
  21. private static long policzNieZera(int n)
  22. {
  23. long result = 9*(long)Math.pow(10,n-1)*n;
  24.  
  25. for(int i=1;i<n;i++)
  26. {
  27. result-=i*newton(n-1,i)*(long)Math.pow(9,n-i);
  28. }
  29. return result;
  30. }
  31. //------------------------
  32. private static long newton(int n,int k)
  33. {
  34. if(k > n/2)
  35. {
  36. k = n-k;
  37. }
  38. long wynik = 1L;
  39. int m = 1;
  40. for(int i=n;i>n-k;i--)
  41. {
  42. wynik*=i;
  43. wynik/=m;
  44. m++;
  45. }
  46. return wynik;
  47. }
  48. }
Success #stdin #stdout 0.11s 320576KB
stdin
Standard input is empty
stdout
[9, 171, 2520, 33300, 414000, 4950000, 57600000, 657000000, 7380000000, 81900000000, 900000000000, 9810000000000, 106200000000000, 1143000000000000, 12240000000000000]
[45, 900, 13500, 180000, 2250000, 27000000, 315000000, 3600000000, 40500000000, 450000000000, 4950000000000, 54000000000000, 585000000000000, 6300000000000000, 67500000000000000]