Đề thi Cùng một tích

doc2 trang | Chia sẻ: haohao | Lượt xem: 1213 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đề thi Cùng một tích, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 84/2001 - Cựng một tớch
(Dành cho học sinh THCS và THPT)
Thuật toỏn: Gọi số lượng số xi =1 là a, số lượng số xi=-1 là b, số lượng số xi = 0 là c. Ta cú: a+b+c=N. 
Với mỗi giỏ trị c khỏc nhau ta cú tương ứng một nghiệm. Nờn số nghiệm bằng số giỏ trị mà c cú thể nhận được. Nếu duyệt theo biến c thỡ cú rất nhiều khả năng nờn thay vỡ duyệt theo biến c ta duyệt theo a và b. Vai trũ của cỏc số bằng 1 và cỏc số bằng -1 là như nhau nờn ta cú thể giả sử số lượng số bằng 1 lớn hơn số lượng bằng -1 (a>=b).
Vậy ồxi = a-b và ồxi2 = a+b (i = 1,..,N)
ồxixj = P (i =1, ..., N; j =1, ..., N; ij) suy ra P =2*ồxixj (i =1, ..., N -1; j =1, ..., N; i<j)
Ta cú phương trỡnh: (a+b)+p=(a-b)2 
suy ra 0 <= (a-b) <= sqrt(a+b+p) <= sqrt(N+p)<[sqrt(2*1010)] = 44721. 
Vậy ứng với mỗi giỏ trị (a-b) ta cú một giỏ trị (a+b) và một giỏ trị c. Lần lượt thử với từng giỏ trị của (a-b) rồi kiểm tra xem a, b và c thoả món cỏc tớnh chất khụng?
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
uses crt;
const fi ='input.txt';
 fo ='output.txt';
var n,p, h :longint;
 dem :longint;
 t :real;
procedure docf;
var f :text;
 begin
 assign(f,fi);
 reset(f);
 read(f,n,p);
 close(f);
 dem:=0;
 end;
procedure lam;
var can :longint;
 begin
 can:=trunc(sqrt(2*n));
 for h:=0 to can do
 begin
 t:=h;
 t:=sqr(t)-p;
 if (t>=h)and(t<=n) then inc(dem);
 end;
 end;
procedure ghif;
var f :text;
 begin
 assign(f,fo);
 rewrite(f);
 writeln(f,dem);
 close(f);
 end;
BEGIN
 docf;
 if p mod 2=0 then lam;
 ghif;
END. 
(Lời giải của Đỗ Đức Đụng)

File đính kèm:

  • docDe thi Toan Tin hoc trong nha truong Bai 84.doc
Đề thi liên quan