আমি www.spoj.com থেকে এই অনুশীলনটি সমাধান করার চেষ্টা করছিলাম: FCTRL - ফ্যাক্টরিয়াল orial
আপনাকে সত্যিই এটি পড়তে হবে না, আপনি যদি আগ্রহী হন তবে এটি করুন :)
প্রথমে আমি এটি সি ++ এ প্রয়োগ করেছি (এটি আমার সমাধান):
#include <iostream>
using namespace std;
int main() {
unsigned int num_of_inputs;
unsigned int fact_num;
unsigned int num_of_trailing_zeros;
std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/a/22225421/5218277)
cin >> num_of_inputs;
while (num_of_inputs--)
{
cin >> fact_num;
num_of_trailing_zeros = 0;
for (unsigned int fives = 5; fives <= fact_num; fives *= 5)
num_of_trailing_zeros += fact_num/fives;
cout << num_of_trailing_zeros << "\n";
}
return 0;
}
আমি এটি g ++ 5.1 এর সমাধান হিসাবে আপলোড করেছি
কিন্তু তারপরে আমি কিছু মন্তব্য দেখেছি যা দাবি করেছে যে তাদের সময় কার্যকর করা 0.1 এর চেয়ে কম ছিল। যেহেতু আমি মনে করি না পারে দ্রুত অ্যালগরিদম আমি একই কোড বাস্তবায়ন করার চেষ্টা সি :
#include <stdio.h>
int main() {
unsigned int num_of_inputs;
unsigned int fact_num;
unsigned int num_of_trailing_zeros;
scanf("%d", &num_of_inputs);
while (num_of_inputs--)
{
scanf("%d", &fact_num);
num_of_trailing_zeros = 0;
for (unsigned int fives = 5; fives <= fact_num; fives *= 5)
num_of_trailing_zeros += fact_num/fives;
printf("%d", num_of_trailing_zeros);
printf("%s","\n");
}
return 0;
}
আমি এটি জিসিসি 5.1 এর সমাধান হিসাবে আপলোড করেছি
এবার ফলাফল ছিল: সময় 0.02 মেমি 2.1M
কোডটি এখন প্রায় একই , আমি সি লাইব্রেরির স্টিডিও বাফারগুলির সাথে সিঙ্ক্রোনাইজেশন বন্ধ করার জন্য এখানেstd::ios_base::sync_with_stdio(false);
পরামর্শ হিসাবে সি ++ কোড যুক্ত করেছি । আমিও বিভক্ত করার দ্বিগুণ কলের জন্য ক্ষতিপূরণ মধ্যে ।printf("%d\n", num_of_trailing_zeros);
printf("%d", num_of_trailing_zeros); printf("%s","\n");
operator<<
cout << num_of_trailing_zeros << "\n";
তবে আমি এখনও সি 9 বনাম সি ++ কোডে এক্স 9 এর আরও ভাল পারফরম্যান্স এবং মেমরির কম ব্যবহার দেখতে পেয়েছি ।
তা কেন?
সম্পাদনা
আমি স্থির unsigned long
করার unsigned int
সি কোডে। এটি হওয়া উচিত ছিল unsigned int
এবং উপরে প্রদর্শিত ফলাফলগুলি নতুন ( unsigned int
) সংস্করণের সাথে সম্পর্কিত ।