Lrapava

ამოცანა 1.1 (თემა: დამტკიცება)

Mar 19th, 2022 (edited)
605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. // ამ 2 ხაზს ყურადღება არ მიაქციოთ
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. // diff ფუნქცია, რომელიც არგუმენტად ერთ მთელ x რიცხვს იღებს და აბრუნებს მთელ რიცხვს
  6. int diff(int x) {
  7.    
  8.     // res ცვლადის აღწერა და მისთვის x-ის მინიჭება
  9.     int res = x;
  10.  
  11.     // ყოველი მთელი i-სთვის [0; x) ინტერვალში
  12.     for (int i = 0; i < x; i++)
  13.         // res ცვლადის მნიშვნელობა გავზარდოთ i*(x-i-1)-ით
  14.         res += i*(x-i-1);
  15.    
  16.     // res ცვლადის მნიშვნელობის დაბრუნება
  17.     return res;
  18.  
  19. }
  20.  
  21. // f ფუნქცია, რომელიც არგუმენტად 1 მთელ რიცხვს (x-ს) იღებს და აბრუნებს მთელ რიცხვს
  22. int f(int x) {
  23.    
  24.     // თუ x უდრის ერთს, აბრუნებს 1-ს
  25.     if (x == 1) return 1;
  26.  
  27.     // თუ არა და, აბრუნებს f(x-1) + diff(x-1)
  28.     // რეალურად f რეკურენტული ფუნქციაა
  29.     return f(x-1) + diff(x-1);
  30.  
  31. }
  32.  
  33. // main ფუნქცია. C-ში და C++-ში პროგრამა როგორც წესი ამ ფუნქციით იწყება.
  34. // int main()-ის შემდგომ ფიგურულ ფრჩხილებს შორის ყველაფერი რაც წერია main()-ის ნაწილია.
  35. // ანუ აქედან
  36. int main() {
  37.  
  38.     // პროგრამის დასაწყისი
  39.     // integer ტიპის „n“ ცვლადის აღწერა და შემოტანა
  40.     int n; cin >> n;
  41.    
  42.     // f(n)-ის გამოტანა
  43.     cout << f(n) << "\n";
  44.    
  45.     // ვაბრუნებ 0-ს, რადგან main() integer ტიპის ფუნქციაა.
  46.     // წესით return 0 („დააბრუნე 0“) შეგვეძლო არც დაგვეწერა, მაგრამ ეს გამონაკლისი მარტო main()-ს ეხება.
  47.     // ამის მიუხედავად მაინც დავწერე, არავინ რომ დაიბნეს (სხვა ფუნქციები რატომ აბრუნებენ რაღაცას, main() კი - არა)
  48.     return 0;
  49. }
  50. // აქამდე არის main() ფუნქცია.
  51. // ანალოგიურადაა სხვა ფუნქციებში.
  52.  
Add Comment
Please, Sign In to add comment