Advertisement
fensa08

[APS] Kolokvium 1 - Opseg

Nov 15th, 2019
949
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.35 KB | None | 0 0
  1. Опсег Problem 4 (1 / 7)
  2.  
  3. Дадена е равенката: 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.
  4.  
  5. Име на класата: Range
  6.  
  7.  
  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 soberiCifri(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 int kvadrat(int broj){
  29.  
  30.         return broj * broj;
  31.     }
  32.  
  33.     static long proveri(int N, long A, long B) {
  34.         // Vasiot kod tuka
  35.  
  36.         // SX - ZBIR NA CIFRI NA X
  37.         if (A == B){
  38.             return -1;
  39.         }
  40.  
  41.         if( A * A + 200 * A + soberiCifri(A) == N)
  42.            { return A;}
  43.         if(B*B + 200*B + soberiCifri(B) == N)
  44.             {return B;}
  45.  
  46.         long mid = (A+B)/2;
  47.  
  48.  
  49.         long rezz = 0;
  50.         rezz = soberiCifri(mid) + mid*mid  + (200*mid);
  51.  
  52.         if(rezz > N){
  53.             proveri(N,A,mid);
  54.         }
  55.         else if(rezz < N){
  56.             proveri(N,mid,B);
  57.         }
  58.         return mid;
  59.  
  60.     }
  61.  
  62.     public static void main(String[] args) throws Exception {
  63.         int i,j,k;
  64.  
  65.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  66.  
  67.         int N = Integer.parseInt(br.readLine());
  68.  
  69.         StringTokenizer st = new StringTokenizer(br.readLine());
  70.         long A = Long.parseLong((st.nextToken()));
  71.         long B = Long.parseLong((st.nextToken()));
  72.  
  73.        long res = proveri(N, A, B);
  74.         //int res = soberiCifri(1234);
  75.         System.out.println(res);
  76.  
  77.         br.close();
  78.  
  79.     }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement