MBGO

New Member
ارسال ها
247
لایک ها
104
امتیاز
0
#1
سلام

*اولین رقم غیر صفر 1000000 فاکتوریل را محاسبه کنید.
**دومین رقم غیر صفر 1000000 فاکتوریل را محاسبه کنید.
***ثابت کنید تعداد ارقام 1000000 فاکتوریل از 5،500،000بیشتر است.
****آخرین رقم 1000000 فاکتوریل رو حساب کنید.

(کلیه سوال ها را بدون محاسبه!!!! یا استفاده از بسط 1000000 فاکتوریل در مبنای 10 بررسی کنید.)
 
ارسال ها
337
لایک ها
82
امتیاز
0
#2
پاسخ : 1000000!

میشه بپرسم بسط هزار فاکتوریل دیگه چیه ؟
 

MBGO

New Member
ارسال ها
247
لایک ها
104
امتیاز
0
#3
پاسخ : 1000000!

هزار نه....میلیون


بسط 4 فاکتوریل در مبنای 10 مثلا میشه 24
 

sa1378

New Member
ارسال ها
1,403
لایک ها
1,077
امتیاز
0
#4
پاسخ : 1000000!

اونوقت چطوری بسط 1 میلیون رو در مبنای 10 به دست بیاریم؟؟؟؟؟؟؟:218:
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#6
پاسخ : 1000000!

خیلی سوال قشنگیه ولی سوال آخرش که خیلی تابلو است گفته آخرین رقم مشخص که 0 است

- - - Updated - - -

هزار نه....میلیون


بسط 4 فاکتوریل در مبنای 10 مثلا میشه 24
با این کار که سوال حل نمیشه این که تابلو 4 فاکتوریل میشه 24
 
ارسال ها
94
لایک ها
38
امتیاز
18
#7
پاسخ : 1000000!

خیلی سوال قشنگیه ولی سوال آخرش که خیلی تابلو است گفته آخرین رقم مشخص که 0 است

- - - Updated - - -

با این کار که سوال حل نمیشه این که تابلو 4 فاکتوریل میشه 24

آخرین رقم از سمت راست نیست از چپ !!!!!!!
 

hossein helli

New Member
ارسال ها
194
لایک ها
130
امتیاز
0
#8
پاسخ : 1000000!

اولیش 8 میشه؟
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#9
پاسخ : 1000000!

این مسعله با استقرا میشه به نظرم 8 میشه رقم قبل از 0
 
ارسال ها
94
لایک ها
38
امتیاز
18
#10

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#11
پاسخ : 1000000!

با برنامه نویسی نمیشه؟

- - - Updated - - -

int loop = 0; private string Multiply(string a1, string a2) { int tmp1 = 0; int hafeze = 0; long maxL = 0; long sabet = 100000; string[] sum = new string[sabet]; for (int i = 1; i <= a2.Length; i++) { for (int i2 = 1; i2 <= a1.Length; i2++) { tmp1 = int.Parse(a2.Substring(int.Parse((a2.Length - i).ToString()), 1)) * int.Parse(a1.Substring(int.Parse((a1.Length - i2).ToString()), 1)); tmp1 += hafeze; hafeze = 0; if (tmp1 < 10) { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, tmp1.ToString()); } else { if (i2 == a1.Length) { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, tmp1.ToString()); } else { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, (tmp1 % 10).ToString()); hafeze = tmp1 / 10; } } loop++; } //if (sum[i - 1].Length > maxL) maxL = sum[i - 1].Length; } //----------------------------------------------------------------------00000000000000000 string c = "0"; for (long i = 1; i < a2.Length; i++) { sum += c; c += "0"; loop++; } //----------------------------------------------------------------------00000000000000000 for (long i = 0; i < sabet; i++) { if (sum != null) { if (sum.Length > maxL) maxL = sum.Length; } loop++; } //---------------------------------------------------------------------- string value = ""; for (int i = 1; i <= maxL; i++) { tmp1 = 0; for (int i2 = 1; i2 < a2.Length + 1; i2++) { if (sum != "") { if (sum[i2 - 1].Length - i >= 0) tmp1 += int.Parse(sum[i2 - 1].Substring(sum[i2 - 1].Length - i, 1)); tmp1 += hafeze; hafeze = 0; } loop++; } if (tmp1 < 10) { value = value.Insert(0, tmp1.ToString()); } else { if (i == maxL) { value = value.Insert(0, tmp1.ToString()); } else { value = value.Insert(0, (tmp1 % 10).ToString()); hafeze = tmp1 / 10; } } loop++; } //---------------------------------------------------------------------- return value; }

- - - Updated - - -

من الان pc2 رو ندارم ولی با نوشتن برنامه سوال حل میشه برای 1000 و100 فاکتوریل من نوشتم درسته

- - - Updated - - -

باید با اعداد استرلینگ حل کنیم با رشته اعداد استرلینگ
 
ارسال ها
94
لایک ها
38
امتیاز
18
#12
پاسخ : 1000000!

با برنامه نویسی نمیشه؟

- - - Updated - - -

int loop = 0; private string Multiply(string a1, string a2) { int tmp1 = 0; int hafeze = 0; long maxL = 0; long sabet = 100000; string[] sum = new string[sabet]; for (int i = 1; i <= a2.Length; i++) { for (int i2 = 1; i2 <= a1.Length; i2++) { tmp1 = int.Parse(a2.Substring(int.Parse((a2.Length - i).ToString()), 1)) * int.Parse(a1.Substring(int.Parse((a1.Length - i2).ToString()), 1)); tmp1 += hafeze; hafeze = 0; if (tmp1 < 10) { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, tmp1.ToString()); } else { if (i2 == a1.Length) { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, tmp1.ToString()); } else { if (sum[i - 1] == null) sum[i - 1] = ""; sum[i - 1] = sum[i - 1].Insert(0, (tmp1 % 10).ToString()); hafeze = tmp1 / 10; } } loop++; } //if (sum[i - 1].Length > maxL) maxL = sum[i - 1].Length; } //----------------------------------------------------------------------00000000000000000 string c = "0"; for (long i = 1; i < a2.Length; i++) { sum += c; c += "0"; loop++; } //----------------------------------------------------------------------00000000000000000 for (long i = 0; i < sabet; i++) { if (sum != null) { if (sum.Length > maxL) maxL = sum.Length; } loop++; } //---------------------------------------------------------------------- string value = ""; for (int i = 1; i <= maxL; i++) { tmp1 = 0; for (int i2 = 1; i2 < a2.Length + 1; i2++) { if (sum != "") { if (sum[i2 - 1].Length - i >= 0) tmp1 += int.Parse(sum[i2 - 1].Substring(sum[i2 - 1].Length - i, 1)); tmp1 += hafeze; hafeze = 0; } loop++; } if (tmp1 < 10) { value = value.Insert(0, tmp1.ToString()); } else { if (i == maxL) { value = value.Insert(0, tmp1.ToString()); } else { value = value.Insert(0, (tmp1 % 10).ToString()); hafeze = tmp1 / 10; } } loop++; } //---------------------------------------------------------------------- return value; }

- - - Updated - - -

من الان pc2 رو ندارم ولی با نوشتن برنامه سوال حل میشه برای 1000 و100 فاکتوریل من نوشتم درسته

- - - Updated - - -

باید با اعداد استرلینگ حل کنیم با رشته اعداد استرلینگ


خب باید دنبال راه حل باشیم با برنامه نویسی که نمیشه
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#13
پاسخ : 1000000!

فهمیدم استقرا روی چی میزنیم روی 10! و 100! و 1000! و ... می زنیم.
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#14
پاسخ : 1000000!

استقرا را این طور ی می زنیم که مثلا 100! می شود می آییم به عوامل وتعداد آن ها را می نویسیم مثلا 100! 3 بتوان 48 و..... 5 ها هم که حذف می شند برای تشکیل 0 و 2 میمونه و7و11و... که مشخصا از 11 به بعد عامل اول یکی داریم که من حساب کردم رقم یکان 100! 4 می شود. بعد استقرا می زنیم برای بقیه!!!!!!
 
ارسال ها
94
لایک ها
38
امتیاز
18
#15
پاسخ : 1000000!

استقرا یعنی الان بعد 100 101 رو حساب میکنیم؟؟؟؟؟؟؟؟؟؟؟
 

shamsaei

New Member
ارسال ها
28
لایک ها
9
امتیاز
0
#16
پاسخ : 1000000!

(1000*....*992*991).....(10*....*3*2*1)=!1000
حال اگر حاصل ضرب هر پرانتز را حساب کرده و تعداد صفر های سمت راست آن ها را پاک کنید همواره عدد 8می ماند (چرا)
پس اولین رقم غیر صفر 1000 فاکتوریل با رقم یکان عدد 8 به توان 1000 برابراست که برابر با 6 است.
 
آخرین ویرایش توسط مدیر
ارسال ها
94
لایک ها
38
امتیاز
18
#17
پاسخ : 1000000!

(1000*....*992*991).....(10*....*3*2*1)=!1000
حال اگر حاصل ضرب هر پرانتز را حساب کرده و تعداد صفر های سمت راست آن ها را پاک کنید همواره عدد 8می ماند (چرا)
پس اولین رقم غیر صفر 1000 فاکتوریل با رقم یکان عدد 8 به توان 1000 برابراست که برابر با 6 است.
چرا؟؟؟؟؟؟؟؟؟
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#18
پاسخ : 1000000!

(1000*....*992*991).....(10*....*3*2*1)=!1000
حال اگر حاصل ضرب هر پرانتز را حساب کرده و تعداد صفر های سمت راست آن ها را پاک کنید همواره عدد 8می ماند (چرا)
پس اولین رقم غیر صفر 1000 فاکتوریل با رقم یکان عدد 8 به توان 1000 برابراست که برابر با 6 است.
مخالفم . 1000 فاکتوریل رقم یکانش میشه 3 برنامه براش نوشتم . بعدم خسته نباشید الان شما چه طوری ثابت می کنید ؟ یعنی شما تک تک حساب می کنید؟!!!
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#19
پاسخ : 1000000!

این سوال باید از طریق پیمانه ها حل شود باید به دنبال پیمانه مناسب بگردیم . راهنمایی:

- - - Updated - - -

این سوال باید از طریق پیمانه ها حل شود باید به دنبال پیمانه مناسب بگردیم . راهنمایی:
ببخشید حواسم نبود هر پیمانه ای که در نظر بگیریم بخش پذیر اون ببخشیدا
 

a$hk@n

New Member
ارسال ها
618
لایک ها
440
امتیاز
0
#20
پاسخ : 1000000!

سینا چیزی به ذهنت نمیرسه؟
 
بالا