A solution with no loops
الدرس 3 من 20 في دورة ألغاز رياضية على Coddy.
يمكن حل التحدي السابق بسهولة باستخدام الحلقات التكرارية. ومع ذلك، إذا كانت N كبيرة - على سبيل المثال N=10**9 - فقد يكون وقت التشغيل طويلاً، طويلاً جداً.
إذا قمت بحل التحدي السابق بدون حلقات تكرارية - فهذا أمر رائع، وأنت بارع جداً، في كل من البرمجة والرياضيات. إذا لم تفعل ذلك، فهذا الدرس لك.
طريقة أخرى هي حساب مجموع كل متتالية حسابية مباشرة.
إذا كنت تعرف الحد الأول، a1، والحد الأخير، an، وعدد الحدود، n، فإن المجموع هو:
S = n * (a1+an)//2
التحدي
سهلاستخدم صيغة المجموع لحساب الحل لهذا التحدي.
اكتب دالة calc التي تأخذ عدداً صحيحاً N كمدخل وتعيد مجموع مضاعفات الرقم 3 أو 5 التي هي أقل من N.
على سبيل المثال، بالنسبة لـ N=10 ستعيد الدالة 23
نصيحة - قم بتقسيم الكود الخاص بك إلى دوال أصغر.
جرّب بنفسك
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
int r = calc(n);
printf("%d\n", r);
return 0;
}