عضو کانال یوتیوب ما شوید.

پاسخ سوال معادله‌های پیچیده + کوئرا

پاسخ سوال معادله‌های پیچیده + کوئرا
پاسخ سوال معادله‌های پیچیده + کوئرا

پاسخ سوال معادله‌های پیچیده + کوئرا

در این نوشته تمرین “معادله‌های پیچیده” که در وبسایت کوئرا موجود می باشد را برای شما کاربران عزیز حل کرده ایم.

 

 

در مورد سایت کوئرا بیشتر بخوانید…

 

تمرین معادله‌های پیچیده کوئرا + جاوا

علی که پسری تنبل و بازی‌گوش است، تمام عید را صرف خوش‌گذرانی در منزل و بازی کردن بود. متاسفانه معلم علی ایمیل زده که از همین شنبه کلاس‌های آنلاین را برگزار می‌کند و تا آن‌موقع همه دانش‌آموزان باید پیک‌های شادی خود را کامل کنند و برای وی ارسال کنند.

علی که وقت کافی برای حل پیک‌شادی خود ندارد و دوستانش منتظرش هستند که در بازی FortCode، آنلاین شود تا باهم بازی کنند، از شما می‌خواهد که برنامه‌ای برای او بنویسید تا با گرفتن یک معادله درجه یک، آن را برایش حل کنید.

شما با دریافت معادله درجه یک،‌ باید آن‌را حل کنید و در صورتی که پس از ساده‌سازی، ضریب  برابر با صفر شد، عبارت invalid را چاپ کنید در غیر اینصورت اگر پاسخ شما برابر  باشد، باید عبارت p q را بنویسید به طوری که  و  نسبت به هم اول باشند و همچنین  عددی طبیعی باشد.

برای اطلاع بیشتر از نحوه دادن معادله بخش ورودی و مثال‌ها را بخوانید.

ورودی سوال معادله‌های پیچیده

در خط اول ورودی ابتدا عدد  می‌آید که بیانگر تعداد کاراکترهای رشته معادله می‌باشد.

در خط دوم یک رشته شامل کاراکتر می‌آید که بیانگر یک معادله درجه یک برحسب  می‌باشد. موارد زیر نیز رعایت شده‌اند:

  • در صورتی که ضریب x، ۱ و یا ۱- باشد، ضریب ۱ نمایش داده نمی‌شود.
  • در رشته ورودی هیچ فاصله‌ای وجود ندارد.
  • رشته ورودی شامل دقیقا یک کاراکتر = می‌باشد.
  • حداقل یک در ورودی وجود دارد و ضریب هیچ ‌ای صفر نمی‌باشد.
  • رشته با علامت  شروع نمی‌شود و درصورتی که ضریب یا عدد بلافاصله بعد از علامت = مثبت باشد، علامت  نمایش داده نمی‌شود.
  • در رشته عبارات و  و  و  وجود ندارند.

همچنین ضریب  و تمامی اعداد در بازه [-10^9, 10^9] می‌باشند.

 

خروجی سوال معادله‌های پیچیده

در تنها خط خروجی، در صورتی که ضریب  پس از ساده‌سازی برابر با صفر بود، عبارت invalid را چاپ کنید در غیراینصورت پاسخ را به صورت p q چاپ کنید به طوری  و q نسبت به هم اول باشند و همچنین  عددی طبیعی باشد.

 

حل سوال معادله‌های پیچیده (به زبان برنامه نویسی جاوا)

import math

temp = input()
moadele = input().split("=")

chap = moadele[0]
rast = moadele[1]

if chap == '':
    chap = '0'
if rast == '':
    rast = '0'

if chap.startswith('-') is False:
    chap = '+' + chap

if rast.startswith('-') is False:
    rast = '+' + rast

q = 0 # x
p = 0 # num

jomle = ''
for ch in chap:
    if ch == '+' or ch == '-':
        if jomle != '':
            if jomle.endswith("x"):
                if len(jomle) > 2:
                    q += int(jomle[:-1])
                else:
                    q += int(jomle[:-1] + '1')
            else:
                p -= int(jomle)
        jomle = ch
    else:
        jomle += ch

if jomle != '':
    if jomle.endswith("x"):
        if len(jomle) > 2:
            q += int(jomle[:-1])
        else:
            q += int(jomle[:-1] + '1')
    else:
        p -= int(jomle)
    jomle = ''

for ch in rast:
    if ch == '+' or ch == '-':
        if jomle != '':
            if jomle.endswith("x"):
                if len(jomle) > 2:
                    q -= int(jomle[:-1])
                else:
                    q -= int(jomle[:-1] + '1')
            else:
                p += int(jomle)
        jomle = ch
    else:
        jomle += ch

if jomle != '':
    if jomle.endswith("x"):
        if len(jomle) > 2:
            q -= int(jomle[:-1])
        else:
            q -= int(jomle[:-1] + '1')
    else:
        p += int(jomle)
    jomle = ''

if q == 0:
    print("invalid")
    exit()

if p == 0:
    print("0 1")
    exit()

pz = 1
qz = 1

if q < 0:
    p *= -1
    q *= -1

if p < 0:
    pz = -1
if q < 0:
    qz = -1

p = abs(p)
q = abs(q)

ghp = []
ghq = []

for i in range(1, int(math.sqrt(p))+1):
    if p % i == 0:
        ghp.append(i)
        ghp.append(int(p/i))

for i in range(1, int(math.sqrt(q))+1):
    if q % i == 0:
        ghq.append(i)
        ghq.append(int(q/i))

maxi = 1
for g in ghp:
    if g in ghq and g > maxi:
        maxi = g

p = int(p/maxi)
q = int(q/maxi)

print(str(p * pz) + " " + str(q * qz))

 

 

منبع سوال : وبسایت کوئرا

 

اگر روش حل بهتری برای “تمرین معادله‌های پیچیده” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.

اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.

موفق باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 3]