banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Kiểm chứng kết quả của 1000! ?  XML
  [Programming]   Kiểm chứng kết quả của 1000! ? 04/06/2009 13:19:15 (+0700) | #1 | 182757
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Như tiêu đề bài viết, mình muốn biết làm sao để biết được kết quả của 1000! hay 2000! hoặc lớn hơn là đúng hay sai? Kết quả tất nhiên rất lớn, không thể nào tính bằng tay rồi so được smilie .
Có cách nào nhanh, gọn một tí không?
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 04/06/2009 14:05:55 (+0700) | #2 | 182761
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
Đây là kết quả của 1000!, còn nếu cần 2000! thì cứ pm mình. Đảm bảo nhanh gọn. Tính giai thừa vài nghìn thì đâu có lâu gì đâu.

4023872600770937735437024339230039857193748642107146325437999104299385\
1239862902059204420848696940480047998861019719605863166687299480855890\
1323829669944590997424504087073759918823627727188732519779505950995276\
1208749754624970436014182780946464962910563938874378864873371191810458\
2578364784997701247663288983595573543251318532395846307555740911426241\
7474349347553428646576611667797396668820291207379143853719588249808126\
8678383745597317461360853795345242215865932019280908782973084313928444\
0328123155861103697680135730421616874760967587134831202547858932076716\
9132448426236131412508780208000261683151027341827977704784635868170164\
3650241536913982812648102130927612448963599287051149649754199093422215\
6683257208082133318611681155361583654698404670897560290095053761647584\
7728421889679646244945160765353408198901385442487984959953319101723355\
5566021394503997362807501378376153071277619268490343526252000158885351\
4733161170210396817592151090778801939317811419454525722386554146106289\
2187960223838971476088506276862967146674697562911234082439208160153780\
8898939645182632436716167621791689097799119037540312746222899880051954\
4441428201218736174599264295658174662830295557029902432415318161721046\
5832036786906117260158783520751516284225540265170483304226143974286933\
0616908979684825901254583271682264580665267699586526822728070757813918\
5817888965220816434834482599326604336766017699961283186078838615027946\
5955131156552036093988180612138558600301435694527224206344631797460594\
6825731037900840244324384656572450144028218852524709351906209290231364\
9327349756551395872055965422874977401141334696271542284586237738753823\
0483865688976461927383814900140767310446640259899490222221765904339901\
8860185665264850617997023561938970178600408118897299183110211712298459\
0164192106888438712185564612496079872290851929681937238864261483965738\
2291123125024186649353143970137428531926649875337218940694281434118520\
1580141233448280150513996942901534830776445690990731524332782882698646\
0278986432113908350621709500259738986355427719674282224875758676575234\
4220207573630569498825087968928162753848863396909959826280956121450994\
8717012445164612603790293091208890869420285106401821543994571568059418\
7274899809425474217358240106367740459574178516082923013535808184009699\
6372524230560855903700624271243416909004153690105933983835777939410970\
0277534720000000000000000000000000000000000000000000000000000000000000\
0000000000000000000000000000000000000000000000000000000000000000000000\
0000000000000000000000000000000000000000000000000000000000000000000000\
000000000000000000000000000000000000000000000000
Mind your thought.
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 04/06/2009 14:16:29 (+0700) | #3 | 182763
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Kết quả thì giống, vấn đề là kiểm chứng xem nó có đúng không? 1000 2000 hay 20000 thì chỉ là vấn đề mình nhập n bằng nhiêu thôi.
Em đâu có nói tính lâu đâu anh, em nói tính bằng tay lâu mà smilie.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 04/06/2009 14:21:47 (+0700) | #4 | 182764
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
Ồ, nếu tính bằng tay thì không có cách nào bạn ạ. Cách duy nhất là thử lại, và bằng tay thì cũng làm được nhưng... lâu. Một trong những cách test là đem so sánh kết quả của mình với kết quả từ một state-of-the-art program. Mình recommend Mathematica, một symbolic computing software chưa bao giờ tính sai.
Mind your thought.
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 04/06/2009 14:27:44 (+0700) | #5 | 182765
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Kiểm chứng à ?
Tham khảo qua vài links sau nhé:

http://justinwhite.com/big-calc/1000.html

http://www.associatedcontent.com/article/590789/the_number_of_zeros_at_the_end_of_1000.html

http://discuss.joelonsoftware.com/default.asp?interview.11.323075.8

Một phép toán số học phức tạp nếu cần kiểm chứng độ chính xác của kết quả mà một máy tính điện tử đưa ra, người ta thường so sánh kết quả sinh ra trên nhiều hệ thống máy tính điện tử khác nhau về mặt phần cứng xử lý, tập lệnh Vi xử lý, khác nhau về phần mềm toán học thực thi phép tính đó. Qua đó xác nhận độ chính xác của kết quả được sinh ra với kết quả tính toán "tự nhiên" nhờ tỉ lệ "giống nhau" giữa các kết quả được tạo ra bởi các hệ thống máy tính điện tử "khác nhau".

iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 05/06/2009 01:16:48 (+0700) | #6 | 182789
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Cám ơn 2 anh nhé, có lẽ Mathematica đúng là cái em cần, 1000! chỉ là ví dụ thôi, em muốn kiểm chứng kq của những phép toán rất rất lớn.
Nhưng Mathematica có phí.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 05/06/2009 03:35:06 (+0700) | #7 | 182792
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
[Profile] [PM] [ICQ]
Cám ơn 2 anh nhé, có lẽ Mathematica đúng là cái em cần, 1000! chỉ là ví dụ thôi, em muốn kiểm chứng kq của những phép toán rất rất lớn.
Nhưng Mathematica có phí

Thử cái miễn phí này coi ...
->
Code:
#!/usr/bin/env python
_sum = 1
for line in range(1, 1000):
    _sum = _sum * line
print _sum

smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 05/06/2009 03:58:12 (+0700) | #8 | 182794
lamer
Elite Member

[Minus]    0    [Plus]
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
[Profile] [PM]
hahaha :-D. hay, nhưng mà dùng xrange tốt hơn dùng range.
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 07/02/2012 01:27:32 (+0700) | #9 | 253217
[Avatar]
bolzano_1989
Journalist

[Minus]    0    [Plus]
Joined: 30/01/2007 12:49:15
Messages: 1406
Offline
[Profile] [PM]

gamma95 wrote:
Cám ơn 2 anh nhé, có lẽ Mathematica đúng là cái em cần, 1000! chỉ là ví dụ thôi, em muốn kiểm chứng kq của những phép toán rất rất lớn.
Nhưng Mathematica có phí

Thử cái miễn phí này coi ...
->
Code:
#!/usr/bin/env python
_sum = 1
for line in range(1, 1000):
    _sum = _sum * line
print _sum

smilie 


Chắc anh gamma95 đẹp trai làm nhanh quá nên có lỗi cần sửa, nếu không kết quả sẽ thiếu 3 chữ số 0 ở cuối smilie:
Code:
#!/usr/bin/env python
_sum = 1
for line in range(1, 1001):
    _sum = _sum * line
print _sum

Kiểm tra các file bạn nghi ngờ có virus:
http://goo.gl/m3Fb6C
http://goo.gl/EqaZt
http://goo.gl/gEF8e
Nhận mẫu virus qua FB: http://goo.gl/70Xo23
HVA Malware Response Team: kiemtravirus@gmail.com
Trợ giúp diệt virus: http://goo.gl/2bqxY
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 07/02/2012 10:31:39 (+0700) | #10 | 253233
[Avatar]
computerline
Member

[Minus]    0    [Plus]
Joined: 30/03/2007 13:46:50
Messages: 144
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]
Cái này hồi trước có viết, tính 100000! cũng được !

Code:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define NMAX 4000000

unsigned int result[NMAX];
unsigned int n;

void ReadFile()
{
	FILE * f = fopen("GIAITHUA.INP", "rt");
	if (f != NULL)
		fscanf(f, "%d", &n);
	fclose(f);
}

void WriteFile()
{
	FILE * f = fopen("GIAITHUA.OUT", "wt");
	
	if (f != NULL) 
	{
        int count = 1;
		for (unsigned int i = result[0]; i >= 1; --i)
		{
			if (count % 80 == 0) 
               fprintf(f, "\n");
			fprintf(f, "%d", result[i]);
			count++;
        }
	}
	fclose(f);
}

void Solve(unsigned int result[], unsigned int n) {
     
	unsigned int remainder;
	result[0] = 1;
	result[1] = 1;
	for (unsigned int i = 2; i <= n; ++i) 
	{
		remainder = 0;
		for (unsigned int j = 1; j <= result[0]; ++j) 
		{
			result[j] = result[j] * i + remainder;
			remainder = result[j] / 10;
			result[j] = result[j] % 10;
		}
		
		while (remainder > 0)
		{
			++result[0];
			result[result[0]] = remainder % 10;
			remainder /= 10;
		}
	}
}


int main() {
	wchar_t buff[100];
	ReadFile();
	DWORD dwStart = GetTickCount();
	Solve(result, n);
	WriteFile();
	DWORD dwInterval = GetTickCount() - dwStart;
	printf("The program pass %d times to complete", dwInterval);
	return 0;
}
Không có nghề gì trong xã hội là thấp hèn cả - chỉ có nhân cách mới phân biệt thấp cao
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 07/02/2012 10:42:03 (+0700) | #11 | 253234
Stanley_00
Member

[Minus]    0    [Plus]
Joined: 01/03/2011 06:21:38
Messages: 74
Offline
[Profile] [PM]

mR.Bi wrote:
...Nhưng Mathematica có phí. 

Thế thì bạn có thể dùng octave, hoặc lên trang http://www.wolframalpha.com/ để dùng
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 07/02/2012 10:50:39 (+0700) | #12 | 253235
[Avatar]
computerline
Member

[Minus]    0    [Plus]
Joined: 30/03/2007 13:46:50
Messages: 144
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]
Trang http://www.wolframalpha.com/ dùng thuật toán gì mà ghê gớm quá ! Tính 1000000! trong chớp mắt !
Không có nghề gì trong xã hội là thấp hèn cả - chỉ có nhân cách mới phân biệt thấp cao
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 07/02/2012 22:38:42 (+0700) | #13 | 253288
[Avatar]
vinhanit
Member

[Minus]    0    [Plus]
Joined: 02/01/2011 19:36:43
Messages: 67
Location: Long Khánh, Đồng Nai
Offline
[Profile] [PM] [Email] [Yahoo!]
Bạn thử dùng python xem, không biết có hiển thị hết không.
[Up] [Print Copy]
  [Programming]   Kiểm chứng kết quả của 1000! ? 20/02/2012 16:20:14 (+0700) | #14 | 254656
[Avatar]
haipt
Member

[Minus]    0    [Plus]
Joined: 20/08/2004 19:48:44
Messages: 165
Location: Hải phòng
Offline
[Profile] [PM] [WWW]

mR.Bi wrote:
Như tiêu đề bài viết, mình muốn biết làm sao để biết được kết quả của 1000! hay 2000! hoặc lớn hơn là đúng hay sai? Kết quả tất nhiên rất lớn, không thể nào tính bằng tay rồi so được smilie .
Có cách nào nhanh, gọn một tí không? 

Hãy tập viết và tìm hiểu phương pháp Unit Testing !!
( NUNIT, CPPUNIT ..or JUNIT )
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|