Massivli ədədlər#1213

Massivli ədədlər (Həll təhlili)

Logaritm - məntiqi olaraq artan funksiyadır, buna görə də, əgər x < y, onda log(x) < log(y).

Tənliyi logaritmə alaq: a^b < c^d. Məsələn, onluq logaritmi (və ya təbii, fərqi yoxdur) götürək:

b \cdot lg a < d \cdot lg c

Deməli, iki böyük ədədin müqayisəsi iki b \cdot lg a və d \cdot lg c ədədlərinin müqayisəsinə çevrilir. b \cdot lg a və d \cdot lg c ifadələrinin dəyərləri tipinə yerləşir, buna görə onları asanlıqla müqayisə etmək olar.

Alqoritmin Reallaşdırılması

Giriş məlumatlarını oxuyun, hər bir ədədin əsaslarını və üstlərini ayırın.

scanf("%d^%d %d^%d",&a,&b,&c,&d);

Pralogarifm olunmuş ifadələrin b \cdot lg a və d \cdot lg c dəyərlərini müqayisə edək, sonra isə cavabı göstərək.

if (b * log(1.0 * a) < d * log(1.0 * c)) printf("%d^%d\n",c,d);
else printf("%d^%d\n",a,b);

Java Reallaşdırılması

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    String s = con.nextLine();
    StringTokenizer st = new StringTokenizer(s," ^");
    int a = Integer.valueOf(st.nextToken()),
        b = Integer.valueOf(st.nextToken()),
        c = Integer.valueOf(st.nextToken()),
        d = Integer.valueOf(st.nextToken());
    if(b * Math.log(a) > d * Math.log(c)) 
      System.out.println(a + "^" + b);
    else 
      System.out.println(c + "^" + d);
    con.close();
  }
}