Advertisement
fensa08

[APS] Opseg

Sep 17th, 2019
530
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1.  
  2.  
  3. Опсег Problem 4 (4 / 19)
  4.  
  5. Дадена е равенката: x2+s(x)+200·x=N каде што x, N се природни броеви, а s(x) е функција која што го дава збирот на цифри на бројот x. Даден е и бројот N и два природни броеви A и B, каде што A≤B и A, B≤1,000,000,000. Потребно е да проверите дали постои природен број x во опсегот [A, B] така што е задоволена равенката, и ако постои тогаш треба да се врати како резултат. Ако таков природен број x во опсегот [A, B] што ја задоволува равенката не постои, тогаш се враќа -1.
  6.  
  7. Име на класата: Range
  8.  
  9.  
  10. ====================================================================================================================================
  11.  
  12.  
  13. import java.io.BufferedReader;
  14. import java.io.InputStreamReader;
  15. import java.util.StringTokenizer;
  16.  
  17. public class Range {
  18.    
  19.     static long cifri(long x) {
  20.         long zbir =0;
  21.         while (x>0) {
  22.             zbir+= x%10;
  23.             x/=10;
  24.         }
  25.         return zbir;
  26.     }
  27.    
  28.     static long proveri(long N, long A, long B) {
  29.      
  30.         if (A == B)
  31.             return -1;
  32.        
  33.        
  34.         if (A * A + 200*A + cifri(A) == N)
  35.             return A;
  36.         if (B*B + 200*B + cifri(B) == N )
  37.             return B;
  38.        
  39.         long mid = (A+B)/2;
  40.        
  41.        // System.out.println(A + " " + B + " " + mid);
  42.  
  43.         long temp = mid * mid + 200 * mid + cifri(mid);
  44.         if (temp > N)
  45.             return proveri(N,A,mid);
  46.         else  if (temp < N)
  47.             return proveri(N,mid,B);
  48.         else return mid;
  49.        
  50.     }
  51.    
  52.    
  53.     public static void main(String[] args) throws Exception {
  54.         int i,j,k;
  55.        
  56.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  57.        
  58.         long N = Long.parseLong(br.readLine());
  59.        
  60.         StringTokenizer st = new StringTokenizer(br.readLine());
  61.         long A = Long.parseLong(st.nextToken());
  62.         long B = Long.parseLong(st.nextToken());
  63.        
  64.         long res = proveri(N, A, B);
  65.         System.out.println(res);
  66.        
  67.         br.close();
  68.        
  69.     }
  70.    
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement