پاسخ سوال مسابقهی آسان کوئرا
در این نوشته تمرین “مسابقهی آسان” که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کردهایم.
پاسخ سوال مسابقهی آسان کوئرا
سجاد در یک مسابقه شرکت کرده است. مسابقه به این صورت است که هر کس یک رقم (از ۰ تا ۹) انتخاب میکند و بایستی بگوید رقمی که انتخاب کرده در فاکتوریل روز تولدش چند بار تکرار شده است. مثلا سجاد رقم ۶ را انتخاب میکند و اگر روز تولدش ۵ مرداد است (که برابر با ۱۲۹ امین روز سال است) بایستی بگوید رقم ۶ چند بار در !129 تکرار شده است. برای این کار به سجاد کمک کنید.
ورودی سوال مسابقهی آسان
در سطر اول دو عدد میآید. عدد اول، روزی از سال است که سجاد به دنیا آمده است و عدد دوم رقم انتخابی اوست.
خروجی سوال مسابقهی آسان
تعداد تکرار رقم انتخابی سجاد در فاکتوریل روزی از سال که به دنیا آمده است را در یک خط چاپ کنید.
حل سوال مسابقهی آسان
#include <iostream> using namespace std; #define MAX 1000 int multiply(int x, int res[], int res_size); void factorial(int n, int birth) { int res[MAX]; int counter = 0; res[0] = 1; int res_size = 1; for (int x=2; x<=n; x++) res_size = multiply(x, res, res_size); for (int i=res_size-1; i>=0; i--) if (res[i] == birth){counter++;} cout << counter; } int multiply(int x, int res[], int res_size) { int carry = 0; for (int i=0; i<res_size; i++) { int prod = res[i] * x + carry; res[i] = prod % 10; carry = prod/10; } while (carry) { res[res_size] = carry%10; carry = carry/10; res_size++; } return res_size; } int main() { int n, birth; cin >> n >> birth; factorial(n, birth); return 0; }
منبع سوال: وبسایت کوئرا
اگر روش حل بهتری برای “تمرین مسابقهی آسان” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.
اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.
ارسال پاسخ