| | Code bài 2 | |
| | Tác giả | Thông điệp |
---|
fallinlove2011 Đang tập code
Tổng số bài gửi : 18 Points : 27 Danh tiếng : 0 Join date : 16/10/2011 Age : 31 Đến từ : Đại Học Công Nghiệp
| Tiêu đề: Code bài 2 Thu Oct 20, 2011 6:38 pm | |
| Đề:Cho một hình chữ nhật kích thước m x n. Hãy tính phải sử dụng ít nhất bao nhiều hình vuông kích thước a x a để có thể che hết HCN trên, lưu ý các hình vuông không thể bị cắt Input 3 số nguyên không âm m,n,a (1≤m,n,a≤〖10〗^9) Output số lượng các hình vuông ít nhất để che(lấp) HCN code: - Code:
-
#include <iostream> #include <math.h> using namespace std; int main() { long long a,b,bt; cin >> a >> b >> bt; long double c = (double)a / bt,d = (double)b / bt; cout << (long long)(ceil(c) * ceil(d)); }
Được sửa bởi fallinlove2011 ngày Wed Nov 30, 2011 4:23 pm; sửa lần 4. (Reason for editing : Sua lai code) | |
| | | TrungHieu11 Admin
Tổng số bài gửi : 52 Points : 102 Danh tiếng : 6 Join date : 15/10/2011 Đến từ : Đại học Công Nghiệp Tp.HCM
| Tiêu đề: Re: Code bài 2 Fri Oct 21, 2011 8:00 pm | |
| Có VD mẫu ko em?? Anh vẫn chưa hiểu cái đề Các hình vuông không thể bị cắt là sao? Test: m = 3 n = 3 a = 2 sao lại ra 4 vậy?? | |
| | | TrungHieu11 Admin
Tổng số bài gửi : 52 Points : 102 Danh tiếng : 6 Join date : 15/10/2011 Đến từ : Đại học Công Nghiệp Tp.HCM
| Tiêu đề: Re: Code bài 2 Fri Oct 21, 2011 8:38 pm | |
| À hiểu đề rùi!! Anh có 1 vài góp ý thế này: 1. Em không cần phải viết những câu đại loại như: "Nhap vao hai canh Hinh Chu Nhat va canh Hinh Vuong!!!" vì máy chấm chứ không phải người chấm nên không cần để những câu đó, em chỉ cần viết thế này: - Code:
-
cin >> m >> n >> a; //Xu li cout << ketqua; 2. Bài này rất là đơn giản. Em suy nghĩ thuật toán khác nghen!! 3. Anh thích cách trình bài của em (giống anh) rất dễ nhìn có điều mấy dòng sau main() thì em nên cho vào 1 tab, ko cần để main(void) 4. Không cần khai báo iostream.h , chỉ cần iostream là đủ vì ở dưới đã có khai báo thư viện chuẩn using namespace std; 5. Bỏ luôn phần này: - Code:
-
while (m < 0 || n < 0 || a < 0) { cout << "Nhap vao hai canh Hinh Chu Nhat va canh Hinh Vuong!!!\n"; cin >> m >> n >> a; } Vì đề đã cho là m, n, a >= 1 6. Và cuối cùng là em có thể nộp bài ở đây: [You must be registered and logged in to see this link.] (Nhấn vào submit, chọn ngôn ngữ là C++, paste code vào khung) | |
| | | thenguyen27192 Đang tập code
Tổng số bài gửi : 9 Points : 14 Danh tiếng : 2 Join date : 20/10/2011 Age : 32 Đến từ : HUI
| Tiêu đề: Re: Code bài 2 Fri Oct 21, 2011 11:47 pm | |
| các bạn xem coi bài mình sai sót chổ nào xin nhận chém nặng tay...hi - Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { double dai,rong,m,n,a,x=0; Scanner sc=new Scanner(System.in); m=sc.nextLong(); n=sc.nextLong(); a=sc.nextLong(); dai=rong=m; if(m>n) { rong = n; dai = m; } if(m<n) { rong=m; dai=n; } if(a>=dai) x=1; if((a>rong)&&(a<dai)) x=2; if(a==rong) x=Math.ceil((dai*rong)/(a*a)); if(a<rong) { x=(Math.floor(rong/a))*(Math.ceil(dai/a))+Math.ceil(dai/a); } System.out.print(x); }
}
bài này mình đang gặp rắc rối ở kiểu dữ liệu, đúng ra phải là kiểu long theo như đề ra...các bạn có thể sữa dùm với ...hix | |
| | | dinhha Đang tập code
Tổng số bài gửi : 11 Points : 20 Danh tiếng : 5 Join date : 15/10/2011 Age : 33 Đến từ : ĐH Công Nghiệp TP. Hồ Chí Minh
| Tiêu đề: Re: Code bài 2 Sat Oct 22, 2011 10:31 am | |
| Em có thể ép kiểu cho nó từ double về long. Anh sửa lại mấy chỗ thế này: - Code:
-
long dai,rong,m,n,a,x=0; - Code:
-
if(a==rong) x=(long)Math.ceil((dai*rong)/(a*a)); if(a<rong) { x=(long )(Math.floor(rong/a))*(long)(Math.ceil(dai/a))+ (long) Math.ceil(dai/a); }
Sử dụng - Code:
-
(long) trước mỗi phép toán trả về double để ép về long | |
| | | thenguyen27192 Đang tập code
Tổng số bài gửi : 9 Points : 14 Danh tiếng : 2 Join date : 20/10/2011 Age : 32 Đến từ : HUI
| Tiêu đề: Re: Code bài 2 Sat Oct 22, 2011 11:18 am | |
| cảm ơn a rất nhiều....e đã sửa lại đúng yêu cầu bài ...hè hè - Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { long m,n,a; double x=0,dai,rong; Scanner sc=new Scanner(System.in); m=sc.nextLong(); n=sc.nextLong(); a=sc.nextLong(); dai=rong=m; if(m>n) { rong = n; dai = m; } if(m<n) { rong=m; dai=n; } if(a>=dai) x=1; if((a>=dai/2)&&(a<dai)) x=2; if(a>rong && a<dai/2) x=Math.ceil(dai/a); if(a==rong) x=Math.ceil((dai*rong)/(a*a)); if(a<rong) { x=((Math.floor(rong/a)))*(Math.ceil(dai/a))+Math.ceil(dai/a); } System.out.print((long)x); }
}
| |
| | | TrungHieu11 Admin
Tổng số bài gửi : 52 Points : 102 Danh tiếng : 6 Join date : 15/10/2011 Đến từ : Đại học Công Nghiệp Tp.HCM
| Tiêu đề: Re: Code bài 2 Sat Oct 22, 2011 11:46 am | |
| - thenguyen27192 đã viết:
- cảm ơn a rất nhiều....e đã sửa lại đúng yêu cầu bài ...hè hè
- Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { long m,n,a; double x=0,dai,rong; Scanner sc=new Scanner(System.in); m=sc.nextLong(); n=sc.nextLong(); a=sc.nextLong(); dai=rong=m; if(m>n) { rong = n; dai = m; } if(m<n) { rong=m; dai=n; } if(a>=dai) x=1; if((a>=dai/2)&&(a<dai)) x=2; if(a>rong && a<dai/2) x=Math.ceil(dai/a); if(a==rong) x=Math.ceil((dai*rong)/(a*a)); if(a<rong) { x=((Math.floor(rong/a)))*(Math.ceil(dai/a))+Math.ceil(dai/a); } System.out.print((long)x); }
}
Bài của bạn sai ở test này: Input:2 2 1 Your output:6 Answer:4 Bạn ghi rõ thuật toán ra để mọi người tham khảo nhé. Nếu sử dụng java để code cũng tốt vì java hổ trợ rất là nhiều hàm có sẵn, code dễ dàng hơn, ít lỗi hơn nhưng thời gian chạy thường chậm hơn C/C++ với lại anh cũng ko rành về java Nhờ Hà xem dùm vậy | |
| | | thenguyen27192 Đang tập code
Tổng số bài gửi : 9 Points : 14 Danh tiếng : 2 Join date : 20/10/2011 Age : 32 Đến từ : HUI
| Tiêu đề: Re: Code bài 2 Sat Oct 22, 2011 3:33 pm | |
| e mới sửa lại, bị bỏ sót 1 chổ.hi. máy e cài win8 nên không cài đc chuong trình chạy c nên tạm xài java....hè hè.mấy hôm ni bận quá...chắc chuyển trọ xong rồi post thuật toán mọi người xem - Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { long m,n,a; double x=0,dai,rong; Scanner sc=new Scanner(System.in); m=sc.nextLong(); n=sc.nextLong(); a=sc.nextLong(); dai=rong=m; if(m>n) { rong = n; dai = m; } if(m<n) { rong=m; dai=n; } if(a>=dai) x=1; if(a==rong/2 && dai==rong) x=4; if((a>=dai/2)&&(a<dai)&&a>rong) x=2; if(a>rong && a<dai/2) x=Math.ceil(dai/a); if(a==rong) x=Math.ceil((dai*rong)/(a*a)); if(a<rong&&(a!=rong/2||a!=dai/2)) { x=((Math.floor(rong/a)))*(Math.ceil(dai/a))+Math.ceil(dai/a); } System.out.print((long)x); } }
| |
| | | TrungHieu11 Admin
Tổng số bài gửi : 52 Points : 102 Danh tiếng : 6 Join date : 15/10/2011 Đến từ : Đại học Công Nghiệp Tp.HCM
| Tiêu đề: Re: Code bài 2 Sat Oct 22, 2011 6:41 pm | |
| - thenguyen27192 đã viết:
- e mới sửa lại, bị bỏ sót 1 chổ.hi. máy e cài win8 nên không cài đc chuong trình chạy c nên tạm xài java....hè hè.mấy hôm ni bận quá...chắc chuyển trọ xong rồi post thuật toán mọi người xem
- Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { long m,n,a; double x=0,dai,rong; Scanner sc=new Scanner(System.in); m=sc.nextLong(); n=sc.nextLong(); a=sc.nextLong(); dai=rong=m; if(m>n) { rong = n; dai = m; } if(m<n) { rong=m; dai=n; } if(a>=dai) x=1; if(a==rong/2 && dai==rong) x=4; if((a>=dai/2)&&(a<dai)&&a>rong) x=2; if(a>rong && a<dai/2) x=Math.ceil(dai/a); if(a==rong) x=Math.ceil((dai*rong)/(a*a)); if(a<rong&&(a!=rong/2||a!=dai/2)) { x=((Math.floor(rong/a)))*(Math.ceil(dai/a))+Math.ceil(dai/a); } System.out.print((long)x); } }
Vẫn còn sai, em nên nói thuật toán ra để mọi người tham khảo. Test sai: Input:12 13 4 Your output:16 Answer:12 Em tự nộp bài trên này nhé [You must be registered and logged in to see this link.] khi nào đúng rùi hẳn up code lên | |
| | | thenguyen27192 Đang tập code
Tổng số bài gửi : 9 Points : 14 Danh tiếng : 2 Join date : 20/10/2011 Age : 32 Đến từ : HUI
| Tiêu đề: Re: Code bài 2 Mon Oct 24, 2011 8:11 pm | |
| sau một hồi viết thật thật dài cuối cùng cũng ngắn hơn và thấy đc dòng Accepted...hè hè - Code:
-
import java.util.Scanner; public class Main { public static void main(String[] args) { long m,n,cv; Scanner sc =new Scanner(System.in); m=sc.nextLong();n=sc.nextLong();cv=sc.nextLong(); double canh1=m,canh2=n,a=cv; System.out.print((long)((Math.ceil(canh1/a))*(Math.ceil(canh2/a)))); } }
| |
| | | Sponsored content
| Tiêu đề: Re: Code bài 2 | |
| |
| | | | Code bài 2 | |
|
Trang 1 trong tổng số 1 trang | |
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |