Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: code tìm số Lucky Division không ổn ở chỗ nào???

  1. #1
    Ngày gia nhập
    11 2010
    Bài viết
    31

    Mặc định code tìm số Lucky Division không ổn ở chỗ nào???

    mới tham gia cái codeforces lần đầu nên chưa hiểu nó lắm. mong các bác chỉ giúp
    http://codeforces.com/contest/122/problem/A
    A. Lucky Division
    time limit per test2 seconds
    memory limit per test256 megabytes
    inputstandard input
    outputstandard output
    Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

    Petya calls a number almost lucky if it could be evenly divided by some lucky number. Help him find out if the given number n is almost lucky.

    Input
    The single line contains an integer n (1 ≤ n ≤ 1000) — the number that needs to be checked.

    Output
    In the only line print "YES" (without the quotes), if number n is almost lucky. Otherwise, print "NO" (without the quotes).

    Sample test(s)
    input
    47
    output
    YES
    input
    16
    output
    YES
    input
    78
    output
    NO
    Note
    Note that all lucky numbers are almost lucky as any number is evenly divisible by itself.

    In the first sample 47 is a lucky number. In the second sample 16 is divisible by 4.
    đó là đề, còn phía dưới là bài làm của mình, chạy thì được nhưng khi submit thì nó báo "Wrong answer on pretest 1".
    nhờ mấy huynh tìm giúp những điều thiếu xót trong bài của mình

    Code:
    #include<iostream>
    #include<string.h>
    
    using namespace std;
    int Check(int n)
    {
            int a;
            if(!(n%4)||!(n%7))
                    return 1;
            else
            do
            {
                    a=n%10;
    
                    if((a==4)||(a==7)) n/=10;
                    else return 0;
            }while(n>0);
            return 1;
    }
    int main()
    {
            int n;
            cin>>n;
            if(Check(n))
                    cout<<"yes";
            else
                    cout<<"No";
    }

  2. #2
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Điều kiện (1 ≤ n ≤ 1000)

  3. #3
    Ngày gia nhập
    11 2010
    Bài viết
    31

    thanks bạn, nhưng sửa lại oj mà vẫn báo wrong.:((

  4. #4
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    C++ Code:
    1. #include < iostream >
    2.  
    3. int check(int x){
    4.     bool flag = false;
    5.    
    6.     if(x >= 1 && x <= 1000){
    7.         if(x % 4 == 0 || x % 7 == 0)
    8.             flag = true;
    9.         else{
    10.                 do{
    11.                 if(x % 10 == 4 || x % 10 == 7)
    12.                     flag = true;
    13.                 x /= 10;
    14.                 }while(x && flag);
    15.         }
    16.     }
    17.     return flag;
    18. }
    19.  
    20. int main(int argc, char *argv[]){
    21.     int n;
    22.    
    23.     std::cout << "Enter n: ";
    24.     std::cin >> n;
    25.     if(check(n))
    26.         std::cout << "Yes" << std::endl;
    27.     else std::cout << "No" << std::endl;
    28.  
    29.     system("pause");
    30.     return 0;
    31. }
    bạn xem thử code này xem

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    31

    bác nào phân tích đề rồi cho em hỏi, số 799 có thỏa không nhỉ.test nó báo 799 thỏa.:((

    Test: #26, time: 10 ms., memory: 1368 KB, exit code: 0, checker exit code: 1, verdict: WRONG_ANSWER
    Input
    799

    Output
    NO
    Answer
    YES

    Checker Log
    wrong answer 1st words differ - expected: 'YES', found: 'NO'

  6. #6
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    Mặc định code tìm số Lucky Division không ổn ở chỗ nào???

    theo đề thì chỉ số nào gồm 2 số 4 và 7 hoặc chia hết cho 4 và 7 thì mới thoả chứ nhỉ?

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    31

    Trích dẫn Nguyên bản được gửi bởi aydada Xem bài viết
    C++ Code:
    1. #include < iostream >
    2.  
    3. int check(int x){
    4.     bool flag = false;
    5.    
    6.     if(x >= 1 && x <= 1000){
    7.         if(x % 4 == 0 || x % 7 == 0)
    8.             flag = true;
    9.         else{
    10.                 do{
    11.                 if(x % 10 == 4 || x % 10 == 7)
    12.                     flag = true;                              
    13.                 x /= 10;
    14.                 }while(x && flag);                    //sai cho này
    15.         }
    16.     }
    17.     return flag;
    18. }
    19.  
    20. int main(int argc, char *argv[]){
    21.     int n;
    22.    
    23.     std::cout << "Enter n: ";
    24.     std::cin >> n;
    25.     if(check(n))
    26.         std::cout << "Yes" << std::endl;
    27.     else std::cout << "No" << std::endl;
    28.  
    29.     system("pause");
    30.     return 0;
    31. }
    bạn xem thử code này xem
    thanks aydada, nhờ bác mà bít thêm Sự khác biệt giữa main(), void main(), int main(), int main(void), int main(int argc, char *argv[]).
    nhưng code của bác sai khi test số 107, và cũng có vấn đề ở số 799 giống mình nữa.

  8. #8
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    C++ Code:
    1. #include < iostream >
    2.  
    3. int check(int x){
    4.     bool flag = false;
    5.    
    6.     if(x >= 1 && x <= 1000){
    7.         if(x % 4 == 0 || x % 7 == 0)
    8.             flag = true;
    9.         else{
    10.                 do{
    11.                 if(x % 10 == 4 || x % 10 == 7)
    12.                     flag = true;
    13.                 x /= 10;
    14.                 }while(x && flag);
    15.         }
    16.     }
    17.     return flag;
    18. }
    19.  
    20. int main(int argc, char *argv[]){
    21.     int n;
    22.     bool flag = false;
    23.    
    24.     std::cout << "Enter n: ";
    25.     std::cin >> n;
    26.    
    27.     for(int i = 2; i < n; ++ i)
    28.         if(n % i == 0){
    29.             if(check(i)){
    30.                 flag = true;
    31.                 break;
    32.             }
    33.         }
    34.  
    35.     if(flag)
    36.         std::cout << "Yes" << std::endl;
    37.     else std::cout << "No" << std::endl;
    38.  
    39.     system("pause");
    40.     return 0;
    41. }

    ước của 107: 1 vs 107, không chia hết cho số may mắn => output là No
    ước của 799: 1, 17, 47, 799. do 47 là số may mắn nên 799 là số may mắn => output Yes

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    31

    thanks aydada, có lẽ bác đã có đáp án đúng.)

  10. #10
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Ý đề bài có phải là thế này không nhỉ?

    C++ Code:
    1. #include <iostream>
    2.  
    3. int lucky_nums[] = {4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, 747, 774, 777};
    4. int N = sizeof(lucky_nums)/sizeof(int);
    5.  
    6. bool check(int num)
    7. {
    8.     for (int i = 0; i < N; ++i)
    9.         if (num % lucky_nums[i] == 0) return true;
    10.     return false;
    11. }
    12.  
    13. int main() {
    14.     int x;
    15.     std::cin >> x;
    16.     std::cout << (check(x) ? "YES" : "NO") << std::endl;
    17.     return 0;
    18. }

Các đề tài tương tự

  1. Deal Vỉ nướng điện không khói King Lucky HB-888
    Gửi bởi cungmuachung trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 10-09-2013, 04:35 PM
  2. Deal Máy đánh trứng King Lucky
    Gửi bởi cungmuachung trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-08-2013, 03:59 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn