Advertisement
vladimirVenkov

expresionsAgainDesi

Jun 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class ExpressiONsAgain {
  6.  
  7.     public static void main (String[] args) throws IOException {
  8.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  9.  
  10.         String input = br.readLine().trim();
  11.         int targetSum= Integer.parseInt(br.readLine());
  12.         char[] charDigits=input.toCharArray();
  13.         int[] digits = new int[charDigits.length];
  14.  
  15.         for(int i=0; i<charDigits.length;i++){
  16.             digits[i]=charDigits[i]-'0';
  17.         }
  18.  
  19.         int number=0;
  20.         int count =0;
  21.  
  22.         for(int i=0; i<digits.length;i++){
  23.  
  24.             if(digits[0]==0){
  25.                 count+=calculateTargetSums(digits,i+1,number,targetSum);
  26.                 break;
  27.             }
  28.             number*=10;
  29.             number+= digits[i];
  30.             count+=calculateTargetSums(digits,i+1,number,targetSum);
  31.  
  32.         }
  33.  
  34.         System.out.println(count);
  35.  
  36.  
  37.     }
  38.  
  39.     private static int calculateTargetSums(int[] digits, int index, int currentSum, int targetSum){
  40.  
  41.         if(index==digits.length){
  42.             if(currentSum==targetSum){
  43.                 return 1;
  44.             }
  45.             else {
  46.                 return 0;
  47.             }
  48.         }
  49.  
  50.         int count =0;
  51.  
  52.         int number =0;
  53.         for(int i=index; i<digits.length;i++){
  54.             number*=10;
  55.             number+= digits[i];
  56.  
  57.             count += calculateTargetSums(digits,i+1,currentSum*number,targetSum);
  58.             count += calculateTargetSums(digits,i+1,currentSum+number,targetSum);
  59.             count += calculateTargetSums(digits,i+1,currentSum-number,targetSum);
  60.  
  61.             if(number==0){
  62.                 break;
  63.             }
  64.  
  65.  
  66.         }
  67.  
  68.         return count;
  69.  
  70.     }
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement