কম্পিউটার

C++ এ প্রথম N ফ্যাক্টোরিয়ালের গুণফল


একটি সংখ্যা N দেওয়া হলে, কাজটি হল 1000000007 দ্বারা প্রথম N ফ্যাক্টোরিয়াল মডিউলের গুণফল বের করা। ফ্যাক্টরিয়াল বোঝায় যখন আমরা সেই সংখ্যা সহ সেই সংখ্যার নীচে সমস্ত সংখ্যার গুণফল খুঁজে পাই এবং এটি দ্বারা চিহ্নিত করা হয়! (বিস্ময়বোধক চিহ্ন), উদাহরণস্বরূপ −4! =4x3x2x1 =24.

সুতরাং, আমাদের 1000000007 দ্বারা n ফ্যাক্টরিয়াল এবং মডিউলের একটি গুণ খুঁজে বের করতে হবে..

সীমাবদ্ধতা

1 ≤ N ≤ 1e6৷

ইনপুট

n =9

আউটপুট

27

ব্যাখ্যা

<পূর্ব>1! *2! *3! * 4! *5! *6! *৭! *8! *9! মোড (1e9 + 7) =27

ইনপুট

n =3

আউটপুট

12

ব্যাখ্যা

<পূর্ব>1! *2! *3! mod (1e9 +7) =12

সমস্যা সমাধানের জন্য নিচের পদ্ধতিটি ব্যবহার করা হয়েছে

  • i =1 থেকে n পর্যন্ত পুনরাবৃত্তভাবে ফ্যাক্টোরিয়াল খুঁজুন এবং সমস্ত ফ্যাক্টরিয়াল গুণ করুন

  • 1e9 +7

    দ্বারা সমস্ত ফ্যাক্টোরিয়ালের গুণফলকে মোড করুন
  • ফলাফল ফেরত দিন।

অ্যালগরিদম

Function long long int mulmod(long long int x, long long int y, long long int mod) ধাপ 1→ 0 ধাপ 2 হিসাবে ফলাফল ঘোষণা করুন এবং সূচনা করুন % 2 ==1 তারপর, ফলাফল হিসাবে সেট করুন (ফলাফল + x) % mod x হিসাবে সেট করুন (x * 2) % mod y হিসাবে y সেট করুন/ 2 ধাপ 4→ রিটার্ন (ফলাফল % mod) ফাংশনে লং লং int nfactprod(লং লং) int num) ধাপ 1→ 1 দিয়ে পণ্য ঘোষণা করুন এবং সূচনা করুন এবং 1 ধাপ 2-এর সাথে ফ্যাক্ট করুন (ফ্যাক্ট, i, MOD)) প্রোডাক্ট সেট করুন (কল ফাংশন mulmod(product, fact, MOD)) যদি প্রোডাক্ট ==0 হয়, তাহলে রিটার্ন 0 স্টেপ 4 → রিটার্ন প্রোডাক্টইন ফাংশন int main() ধাপ 1→ ডিক্লেয়ার এবং ইনিশিয়ালাইজ করুন num =3 ধাপ 2→ কল করে ফলাফল প্রিন্ট করুন (nfactprod(num))Stop

উদাহরণ

#include long long int mulmod(long long int x, long long int y, long long int mod){ long long int result =0; x =x % মোড; while (y> 0) {// x যোগ করুন যেখানে y বিজোড়। যদি (y % 2 ==1) ফলাফল =(ফলাফল + x) % মোড; // x দিয়ে গুন করুন 2 x =(x * 2) % mod; // y কে 2 y দিয়ে ভাগ করুন /=2; } রিটার্ন ফলাফল % mod;} long long int nfactprod(long long int num){ // 1 লং লং int প্রোডাক্ট =1, ফ্যাক্ট =1 সহ প্রোডাক্ট এবং ফ্যাক্ট ইনিশিয়ালাইজ করুন; long long int MOD =1e9 + 7; জন্য (int i =1; i <=num; i++) { // প্রতিটি পুনরাবৃত্তির ফ্যাক্টোরিয়াল খুঁজে বের করতে =mulmod(fact, i, MOD); // প্রথম আই ফ্যাক্টোরিয়াল পণ্যের পণ্য =মুলমোড(পণ্য, ঘটনা, এমওডি); //যখন MOD দ্বারা বিভাজ্য পণ্য 0 প্রদান করে যদি (পণ্য ==0) 0 ফেরত দেয়; } রিটার্ন পণ্য;} int main(){ long long int num =3; printf("%lld \n", (nfactprod(num))); রিটার্ন 0;

আউটপুট

উপরের কোডটি চালালে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
12

  1. সংখ্যার বিন্যাসের গুণফলের প্রথম সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  2. C++ এ একটি পণ্য অ্যারে ধাঁধা?

  3. C++ STL-এ lldiv() ফাংশন

  4. সি++ এ অ্যাসাইনমেন্ট অপারেটর