Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Опсег Problem 4 (1 / 7)
- Дадена е равенката: 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.
- Име на класата: Range
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- public class Range {
- static long soberiCifri(long x) {
- long zbir =0;
- while (x>0) {
- zbir+= x%10;
- x/=10;
- }
- return zbir;
- }
- static int kvadrat(int broj){
- return broj * broj;
- }
- static long proveri(int N, long A, long B) {
- // Vasiot kod tuka
- // SX - ZBIR NA CIFRI NA X
- if (A == B){
- return -1;
- }
- if( A * A + 200 * A + soberiCifri(A) == N)
- { return A;}
- if(B*B + 200*B + soberiCifri(B) == N)
- {return B;}
- long mid = (A+B)/2;
- long rezz = 0;
- rezz = soberiCifri(mid) + mid*mid + (200*mid);
- if(rezz > N){
- proveri(N,A,mid);
- }
- else if(rezz < N){
- proveri(N,mid,B);
- }
- return mid;
- }
- public static void main(String[] args) throws Exception {
- int i,j,k;
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int N = Integer.parseInt(br.readLine());
- StringTokenizer st = new StringTokenizer(br.readLine());
- long A = Long.parseLong((st.nextToken()));
- long B = Long.parseLong((st.nextToken()));
- long res = proveri(N, A, B);
- //int res = soberiCifri(1234);
- System.out.println(res);
- br.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement