1. Trang chủ
  2. » Giáo Dục - Đào Tạo

chuyên đề môn tin học chủ để các bài toán số học

52 415 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 0,94 MB

Nội dung

CHUYÊN ĐỀ CÁC BÀI TOÁN SỐ HỌC I MỞ ĐẦU Trong nhiều toán Tin học, việc vận dụng kiến thức số học giúp đưa thuật toán tối ưu Mặt khác, toán Tin học có vận dụng kiến thức số học bản, địi hỏi cài đặt khơng q phức tạp em có tảng Tốn học tốt dễ dàng suy luận Từ kích thích niềm u thích em việc lập trình Các thuật toán số học tin học nội dung kiến thức quan trọng sử dụng nhiều thiết kế thuật tốn Tuy nhiên, q trình giảng dạy tơi thấy học sinh cịn khó khăn việc phân tích tốn để áp dụng thuật toán cài đặt giải toán Vì tơi chọn chun đề để giúp học sinh có hệ thống kiến thức toán học để giúp em dễ dàng giải toán cụ thể đối toán số học Nội dung chuyên đề chia thành ba phần: Mở đầu, Nội dung Kết luận Trong phần Nội dung (và phần chun đề) chúng tơi đề cập tới vấn đề chính: Số nguyên tố, Ước số, Bội số, Số Fibonacci, Số Catalan, Xử lí số nguyên lớn, Do chuyên đề toán số học nên kiến thức sở ứng dụng tập cụ thể Về mặt lí thuyết số học có nhiều tài liệu trình bày, tài liệu giáo khoa chuyên Tin hệ thống cụ thể Chuyên đề sưu tầm, chọn lọc, xếp hệ thống vấn đề toán số học theo mạch kiến thức định dựa số nguồn tài liệu có Cùng với đó, chúng tơi có đưa phân tích, đánh giá để làm sáng tỏ cho vấn đề đề cập tới Với cách tiếp cận mở vậy, hy vọng chuyên đề giúp em học sinh có hệ thống kiến thức cần thiết, thầy giáo có chun đề chun mơn bổ ích thiết thực II NỘI DUNG Số nguyên tố 1.1 Định nghĩa Một số tự nhiên p (p>1) số nguyên tố p có hai ước số p Ví dụ số nguyên tố: 2, 3, 5, 7, 11, 13, 17, 19, 23, … 1.2 Kiểm tra tính nguyên tố theo định nghĩa Ý tưởng để kiểm tra số nguyên dương N (N>1) có số nguyên tố hay khơng, ta kiểm tra xem có tồn số ngun k (2 �k � N ) mà k ước N (N chia hết cho k) N khơng phải số nguyên tố, ngược lại N số nguyên tố bool IsPrime(int N) { if (N < 2) return flase; for(int i = 2; i < sqrt(N); i++) if(N%i==0) return flase; return true; } Tuy nhiên ta thấy cách khơng hiệu khì thời gian kiểm tra lâu Cải tiến kiểm tra tính nguyên tố số N cách kiểm tra xem N có chia hết cho 5, N � số 2, số số có dạng 6k �1 đoạn � � � bool { IsPrime (int N) if (N==2 || N==3) return true; if (N==1 || N%2==0 || N%3==0) return false; int k=-1; while (kint(sqrt(N)); } 1.3 Kiểm tra số nguyên tố theo xác suất Các khái niệm, tính chất đồng dư thức, định lý cần nhớ định lý Ferma Ở đề cập đến định lý Ferma nhỏ tổng quát hóa định lý Ferma: Định lý Ferma nhỏ Nếu p số nguyên tố, với số nguyên a bất kỳ, ap-a chia hết cho p p Nghĩa a �a (mod p) Một dạng tổng quát định lý là: p số nguyên tố m n m a n (mod p ) số nguyên dương thỏa mãn m �n(mod p  1) , a  Z : a Định lý Fermat cịn tổng qt hóa Định lý Euler: với modulo n  (n) �1(mod n) số nguyên a số nguyên tố với n, ta có: a Trong  (n) kí hiệu hàm phi Euler đếm số số nguyên n nguyên tố với n Đây tổng quát hóa định lý nhỏ Fermat n=p số nguyên tố  ( p)  n  1.4 Liệt kê số nguyên tố đoạn [1,N] Cách Thử số m đoạn [1,N], kiểm tra tính nguyên tố m void OutPrime(int N) { for(int i = 2; i 1) c.pop_back(); return c; } bool operator < (BigInt a, BigInt b) { while (a.size() && *a.rbegin() == 0) a.pop_back(); while (b.size() && *b.rbegin() == 0) b.pop_back(); if (a.size() != b.size()) return a.size() < b.size(); for (int i = a.size() - 1; i >= 0; i ) if (a[i] != b[i]) return a[i] < b[i]; return false; } int main() { string sa, sb; cin >> sa >> sb; BigInt a = Init(sa); BigInt b = Init(sb); Print(a + b); if (a < b) { printf("-"); 38 Print(b - a); } else { Print(a - b); } Print(a * b); return 0; } Bộ test tham khảo: (Có SPOJ) Bài 11 FUNCTION Cho hàm số tuyến tính f  x   A x  B Định nghĩa g0  x   x g n  x   f  g n 1  x   với n �1 Cho trước số A, B, n, x Tính g n  x  mod cho 10  18 Input: Một dòng gồm số A, B, n, x  �A, B, x �10 ,1 �n �10  Output: Một dòng đáp án Ví dụ: Input Output 3411 Hướng dẫn + Theo đề bài: g0(x) = x gn(x) = f (gn−1(x)) với n ≥  � g1  x   f  g  x    f  x   Ax  B � g  x   f  g1  x    A  Ax  B   B  A2 x  AB  B …     � g n  x   A A A  �� Ax  B   B   B  �  B  An x  An 1 B  An  B   B   An x  B  An 1  An    A  1   An x  B  An  1 /  A  1 + Tính: g n  x  %  1e9             A  1   A  1 *  A n n 1  An    A  1  A % mod  *  x % mod    B % mod  *   A n n    1 /  A  1 % mod + Tính An % mod sử dụng kĩ thuật đệ quy n + Tính   A  1 /  A  1  %mod : Ta có định lý Fermat nhỏ: p số nguyên tố với số tự nhiên b ta có b p 1 % p  + Áp dụng: với p số nguyên tố ta có: 39  a / b  % p    a * b p 2  / b p 1  % p    a * b p 2   % p (đồng dư) � g n  x  %  1e9     An %mod  *  x%mod    B%mod  *   An  1 /  A 1  %mod    An %mod  *  x%mod    B% mod  *  An  1 *  A  1 mod   %mod Chương trình tham khảo #include #define Task "function" using namespace std; const int m = 1e9 + 7; long long a,b,x; unsigned long long n; long long power(long long k, long long h) { if(h == 0) { return 1; } else { long long temp = power(k, h/2)%m; if(h % == 0) return temp*temp%m %m; else return (temp*temp%m) * k%m; } } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); freopen(Task".inp", "r", stdin); freopen(Task".out", "w", stdout); cin >> a >> b >> n >> x; if(a==1) cout

Ngày đăng: 18/08/2020, 22:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w