פתרון ללא לולאות
שיעור 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;
}
כל השיעורים ביחידה חידות מתמטיות
1מבוא
חידות מתמטיות9מספרים בינאריים
מבואתרגלו בעצמכם: קומפיילר C אונליין