تحدي برمجي[010][سهل - متوسط] ff

  • afaki

لديك function اسمها ff معرفة كالتالي

ff(n){
    if(n <= 100){
        return ff(ff(n + 11))
    }else{
        return n - 10
    }
}

المطلوب منك أخذ مدخلات من المستخدم وحساب قيمة ff

المدخلات

اول سطر يحتوي على عدد n بعدها يأتي n سطر. كل سطر يحتوي على عدد x يجب ان تحسب قيمة ff(x)

الحدود

1 <= n <= 500000
1 <= x <= 1000000

المخرجات

قيمة ff(x)

يجب أن يتم تنفيذ البرنامج في أقل من ثانيتين

مثال

المدخلات

5
100
230
300
1234
2341

المخرجات

91
220
290
1224
2331

مثال ضخم

والإجابة الصحيحة

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

هناك خطأ ما في صيغة الدالة ff

لأنه لا يمكن حساب (ff(100

ff(100) = ff(ff(100 + 11)) = ff(ff(111)) = ff(111 - 11) = ff(100)
-1

اوه اسف

هي n -10 وليست n - 11

تم التعديل

يظهر من التجربة أن الدالة تعيد 91 بالنسبة للأعداد أقل من 100

وبنسبة للبقية تقوم الدالة بطرح 10 من المدخلات

قد يكون هناك خطأ آخر في صيغة الدالة

نعم هذا كان الهدف من التحدي. اكتشاف النمط بدل ال recursion لان ال recursion سيأخذ وقت طويل وذاكرة كبيرة.

بالنسبة للأعداد الأكبر من 100 فهذا واضح من تعريف الدالة

البقية عبارة عن sequence تنتهي إلى 91. لا أعرف هل يمكن إثبات هذا رياضيا ولكنني اكتشفته من التجربة

انظر لهذا