এই প্রবলেম এ বলা আছে 1 থেকে 500000 পর্যন্ত এন একটি সংখ্যা দেওয়া থাকবে এবং এদের প্রত্যেক ডিভিসর গুলো যোগফল বের করতে হবে। যেমন 20 এর 5 টা প্রপার ডিভিসর আছে 1,2,4,5,10 সুতরাং এদের যোগফল হবে 1+2+4+5+10=22।
কম্পিটিটিভ প্রোগ্রামিং করতে গিয়ে আমরা প্রায়ই হতাশ হয়ে যাই অনেকেই কোন স্টেপ পরে কোন স্টেপ আগাতে হবে সেটা বুজতে পারি না । তাই প্রতিটা কনন্টেস্টটেন্ট এর জন্য একটি গাইডলাইন স্প্রেডশিট ডক ফাইল এ দেওয়া আছে । https://docs.google.com/spreadsheets/d/1iJZWP2nS_OB3kCTjq8L6TrJJ4o-5lhxDOyTaocSYc-k/htmlview?fbclid=IwAR29t0hBdc91ivFBj285N0PPYKzAZ_n-EJctz3VQPn9WPbtQvHdHbyUxhrk# source : codeforce কোডফোর্সেস ্এর কিছু ইন্টারেস্টিং প্রবলেম দেওয়া হল: https://codeforces.com/blog/entry/54526 যে কোন প্রোগ্রামিং কন্টেস্ট এ যে বিষয়টা কমন থাকে সেটা হচ্ছে Number Theory তাই এই টপিক উপর কিছু বাংলা টিউটোরিয়াল দেওয়া হল: https://github.com/hasancse91/Programming-Problem-In-Bengali/blob/master/Number%20Theory.md https://www.codechef.com/wiki/tutorial-number-theory video: https://www.youtube.com/watch?v=FtztfI86pBY&list=PLr3WmPgPWZfX1HUpeyKkP6ir2wOFhqXMO&index=1 ACM ICPC সর্ম্পকিত কিছু প্রবলেম এবং কোড: https://github.com/ippeb/ACM-ICPC/blob/master/...
-প্রবলেমঃ একটি নাম্বার N দেওয়া থাকবে। ঐ নাম্বার N! কয়টি নাম্বার আছে সেটি বের করতে হবে। ব্রোথ-ফোর্স সলিউশনঃ নরমালি যদি আমাদের যদি এই প্রবলেম সলিশন করতে বলা হয় তাহলে আমাদের চিন্তুা অনুযায়ী যা করি তা হচ্ছে: #include <bits/stdc++.h> using namespace std ; int factorialDigit ( int n ) { long long fact = 1 ; for ( int i = 2 ; i <= n ; i ++ ) { fact *= i ; } int res = 0 ; // Number of digit of n! while ( fact ) { // Loop until fact becomes 0 res ++ ; fact /= 10 ; // Remove last digit } return res ; } int main () { int n ; cin >> n ; cout << factorialDigit ( n ) << endl ; } কিন্তু এই কোড টা কাজ করবে N<=20 । যদি N>=20 থেকে বেশি নেই তাইলে long long ব্যবহার করলে overflow হবে। তাহলে কি আমরা বিগ ইন্টিজার ব্যবহার করতে পারি? লগারিদম এর মাধ্যমে ফ্যাক্টরিয়ালের সংখ্যা বের করা: নিচে কিছু লগারিদম ভ্যালু দিয়ে নাম্বার বের করা হয়...
Comments
Post a Comment