Advertisement
Guest User

Thanks

a guest
Jun 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. package Class;
  2. import java.util.Scanner;
  3. public class SumofFactorials {
  4. public static void main(String[] args) {
  5. Scanner scan=new Scanner(System.in);
  6. int a;
  7. int maxfact=10;
  8. while(scan.hasNext()) {
  9. a=scan.nextInt();
  10. if(a==-1) {
  11. System.exit(0);
  12. }
  13. sumoffactorials(a,maxfact);
  14. }
  15. scan.close();
  16.  
  17. }
  18. public static int[] factorial(int maxfact) {
  19. int a[] = new int[maxfact];
  20. a[0]=1;
  21. a[1]=1;
  22. for (int i=2;i<maxfact;i++) {
  23. a[i]=i * a[i-1];
  24. }
  25. return a;
  26. }
  27. public static boolean Checking(int arr[],int input,int f) {
  28. if (input==0) {
  29. return true;
  30. } else
  31. return Checking(arr, input-arr[f], f-1);
  32. }
  33. public static int greatestIndexNotExceeding(int[] data, int limit) {
  34. if (data.length < 1) {
  35. return -1;
  36. }
  37. return greatestIndexNotExceeding(data, limit, 0, data.length - 1);
  38. }
  39. private static int greatestIndexNotExceeding(int[] data, int limit, int lb, int ub) {
  40. final int mid = (lb + ub) / 2;
  41. if (mid == lb && data[mid] > limit) {
  42. return -1;
  43. }
  44. if (data[mid] <= limit && (mid == ub || data[mid + 1] > limit)) {
  45. return mid;
  46. }
  47. if (data[mid] <= limit) {
  48. return greatestIndexNotExceeding(data, limit, mid + 1, ub);
  49. } else {
  50. return greatestIndexNotExceeding(data, limit, lb, mid);
  51. }
  52. }
  53. public static void sumoffactorials(int input,int maxfact) {
  54. int arr[];
  55. arr=factorial(maxfact);
  56. int f=greatestIndexNotExceeding(arr,input);
  57. Checking(arr,input,f);
  58. if (Checking(arr,input,f) == true)
  59. System.out.println("YES");
  60. else
  61. System.out.println("NO");
  62. if(input==-1) {
  63. System.exit(0);
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement