من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

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

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

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

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

 

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

علی که پسری تنبل و بازی‌گوش است، تمام عید را صرف خوش‌گذرانی در منزل و بازی کردن بود. متاسفانه معلم علی ایمیل زده که از همین شنبه کلاس‌های آنلاین را برگزار می‌کند و تا آن‌موقع همه دانش‌آموزان باید پیک‌های شادی خود را کامل کنند و برای وی ارسال کنند. علی که وقت کافی برای حل پیک‌شادی خود ندارد و دوستانش منتظرش هستند که در بازی 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]