int
y = box.y + box.height/2;
return new
Point(x, y);
}
public static void
main(String[] args) {
Rectangle box1 =
new
Rectangle(2, 4, 7, 9);
Point p1 = findCenter(box1);
printPoint(p1);
box1.grow(1, 1);
Point p2 = findCenter(box1);
printPoint(p2);
}
Bài t p 4
ậ
Đ n gi có th b n đang t
ng t v ph
ng th c giai th a, nh ng ta s vi t thêm m t d ng
ế
ờ
ể ạ
ươ
ư ề
ươ
ứ
ừ
ư
ẽ ế
ộ ạ
m i.
ớ
1.
Hãy t o m t ch
ng trình m i có tên
ạ
ộ
ươ
ớ
Big.java r i vi t m t d ng l p cho
ồ
ế
ộ ạ
ặ
factorial.
2. In ra m t b ng các s nguyên ch y t 0 đ n 30 cùng v i giai th a c a chúng. t m kho ng 15, có th
ộ ả
ố
ạ ừ
ế
ớ
ừ ủ
Ở ầ
ả
ể
b n s th y k t qu không còn đúng n a. T i sao v y?
ạ ẽ ấ ế
ả
ữ
ạ
ậ
3.
BigIntegers là các đ i t
ng Java v i kh năng bi u di n nh ng s nguyên l n tùy ý. Không có gi i h n
ố ượ
ớ
ả
ể
ễ
ữ
ố
ớ
ớ ạ
trên nào tr gi i h n kích th
c b nh và t c đ x lý. Hãy đ c tài li u v BigIntegers
ừ ớ ạ
ướ ộ
ớ
ố ộ ử
ọ
ệ
ề
athttp://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html.
4.
Đ dùng đ
c BigIntegers, b n ph i thêm dòng
ể
ượ
ạ
ả
import java.math.BigInteger vào đ u ch
ng trình c a
ầ
ươ
ủ
b n.
ạ
5.
Có vài cách t o nên m t BigInteger, nh ng tôi khuyên b n cách dùng
ạ
ộ
ư
ạ
valueOf. Đo n mã sau chuy n đ i
ạ
ể
ổ
m t s nguyên thành
ộ ố
BigInteger:
int
x = 17;
BigInteger big = BigInteger.valueOf(x);
Hãy gõ đo n mã l nh này r i ch y th . C g ng in ra m t BigInteger.
ạ
ệ
ồ
ạ
ử ố ắ
ộ
6.
Vì BigIntegers không ph i là ki u nguyên th y nên các toán t toán h c thông th
ng không th thao
ả
ể
ủ
ử
ọ
ườ
ể
tác v i chúng. Thay vào đó, ta ph i dùng nh ng ph
ng th c nh
ớ
ả
ữ
ươ
ứ
ư add. Đ c ng hai BigInteger, hãy kích
ể ộ
ho t
ạ add lên m t s r i truy n s kia làm đ i s . Ch ng h n:
ộ ố ồ
ề ố
ố ố
ẳ
ạ
BigInteger small = BigInteger.valueOf(17);
BigInteger big = BigInteger.valueOf(1700000000);
BigInteger total = small.add(big);
Hãy th m t s ph
ng th c khác, nh
ử ộ ố
ươ
ứ
ư multiply và pow.
7.
Chuy n đ i
ể
ổ factorial sao cho nó tính toán v i BigInteger r i tr l i k t qu cũng là m t BigInteger. B n
ớ
ồ
ả ạ ế
ả
ộ
ạ
có th m c k tham s —nó v n s là m t s nguyên.
ể ặ ệ
ố
ẫ ẽ
ộ ố
8. Hãy th in l i b ng b ng ph
ng th c giai th a mà b n v a s a đ i. Li u nó có đúng đ n 30 không?
ử
ạ ả
ằ
ươ
ứ
ừ
ạ
ừ ử
ổ
ệ
ế
B n có th làm cho nó l n đ n bao nhiêu? Tôi đã tính giai th a c a t t c các s t 0 đ n 999, nh ng vì
ạ
ể
ớ
ế
ừ ủ ấ ả
ố ừ
ế
ư
máy tính c a tôi khá ch m nên m t m t lúc. S cu i cùng, 999!, có t i 2565 ch s .
ủ
ậ
ấ
ộ
ố ố
ớ
ữ ố
Bài t p 5
ậ
Nhi u kĩ thu t mã hóa ph thu c vào kh năng nâng các s nguyên l n lên nh ng lũy th a
ề
ậ
ụ
ộ
ả
ố
ớ
ữ
ừ