ছোটদের প্রোগ্রামিং শেখা এখন আগের চেয়েও সহজ। কারণ দ্বিমিক প্রকাশনী থেকে বের হয়েছে তামিম শাহরিয়ার সুবিন-এর "পাইথন দিয়ে প্রোগ্রামিং শেখা"! বিস্তারিত জানতে এখানে ক্লিক করুন

গৌণিক / ফ্যাক্টরিয়াল

এমন একটি প্রোগ্রাম লিখতে হবে যেটি একটি সংখ্যার গৌণিক (মানে, ফ্যাক্টরিয়াল - factorial) বের করতে পারে।

ইনপুট
প্রথমে একটি সংখ্যা দেওয়া থাকবে এবং ওই সংখ্যার মান যত, তারপর ততটি লাইন থাকবে। প্রতি লাইনে একটি পূর্ণসংখ্যা, N থাকবে। N-এর মান হবে 0 থেকে 15-এর ভেতর (0 <= N <= 15)।

আউটপুট
প্রতি লাইনে N-এর factorial বা গৌণিক প্রিন্ট করতে হবে।


৫২টি প্রোগ্রামিং সমস্যা ও সমাধান বইতে এই সমস্যার সমাধান নিয়ে আলোচনা করা হয়েছে।

১২টি মন্তব্য:

  1. ফ্যাক্টোরিয়ালের জন্য unsigned long int ডেটা টাইপ ব্যবহার করলে ১৫ এর ফ্যাক্টোরিয়ালের ভুল মান রিটার্ন করে । long long int ব্যবহার করে সঠিক উত্তর পাওয়া গেছে । কেন ?

    উত্তরমুছুন
    উত্তরগুলি
    1. unsigned long int ১৫ এর ফ্যাক্টরিয়াল ধরার মত যথেষ্ট বড় নয়, long long int যথেষ্ট বড়

      মুছুন
  2. The range of unsigned long int is >> 0 to 4,294,967,295
    The value of factorial 15 is out of range.
    So it will give you a garbage value.

    উত্তরমুছুন
  3. আমি যদি n =100 ইনপুট দিতে চাই তাহলে unsigned long long int, এই সীমা তে হবে না!! n = ১০০ এর জন্য আমি কি করতে পারি???? ওইটা নিয়ে একটু আলোচনা করলে উপকৃত হতাম :D

    উত্তরমুছুন
    উত্তরগুলি
    1. Unsigned Long Long দিয়ে n = 20 এর বেশি ফ্যাক্টোরিয়াল কোনো ভাবেই প্রিন্ট করা সম্ভব নয় । এজন্য আপনাকে বিগ ইন্টেজার বা স্ট্রিং ম্যানিপুলেশন এর সাহায্য নিতে হবে । এক কথায় স্ট্রিং এর যোগ বিয়োগ গুন ভাগ করা জানতে হবে ।

      মুছুন
  4. yay!! ive used double type and used %.0lf while printing. it worked!!
    and then accepted!!
    :-)

    উত্তরমুছুন
  5. sir code টায় problem কোথায়?
    #include

    int main()
    {
    int i,t;
    unsigned long int num,p,j;

    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
    scanf("%lu",&num);
    p=1;
    for(j=2;j<=num;j++)
    {
    p=p*j;
    }
    printf("%lu\n",p);
    }
    return 0;
    }

    উত্তরমুছুন
  6. এই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।

    উত্তরমুছুন
  7. #include
    int main()
    {
    long long int i,j,n,a,b;
    long long int s=1;
    scanf("%lld",&n);
    long long int ara[n];
    for(i=0;i=1;j--)
    {
    s=s*j;
    }

    ara[i]=s;
    s=1;
    }
    for(i=0;i<n;i++)
    {
    printf("%lld\n",ara[i]);
    }



    return 0;
    }

    its working well.but why not accepting?

    উত্তরমুছুন

এখানে বিষয়সংশ্লিষ্ট মন্তব্য কিংবা প্রশ্ন করা যাবে। বাংলায় মন্তব্য করার সময় বাংলা হরফে লিখতে হবে। আর রোমান হরফে লিখলে ইংরেজিতে লিখতে হবে। নতুবা মন্তব্য প্রকাশ করা হবে না। ধন্যবাদ।