f(x,y):Z*Z-->N

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
#1
شکل زیر تابع
را معرفی میکند.

الف) الگوریتمی ارائه دهید که عدد n را از ورودی گرفته و مختصات (x,y) آن را در خروجی چاپ کند.

ب) فرمولی ارائه دهید که که مقدار n را بر حسب x,y بیابد.
 
آخرین ویرایش توسط مدیر
لایک ها SABB

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#2
پاسخ : f(x,y):Z*Z-->N

الف) الگوریتمش اینه که اول تعداد دور هایی که زده (با جذر گرفتن) و بعد بقیه شو حساب می کنیم.

کد
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n, m, d, p, q, x, y;
    cin >> n;
    m = sqrt(n);
    p = m % 2 ? -1 : 1;
    q = p == 1 ? 0 : 1;
    d = n - m * m;
    if(d <= m)
    {
            x = p * (d - m/2);
            y = p * (- m/2) + q;
    }
    else
    {
            x = p * (- m/2 + m);
            y = p * (d - m - m/2) + q;
    }
    cout << "(" << x << "," << y << ")";
    return 0;
}
 
بالا