Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    18-12-2008
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật ! tìm số nguyên dương lớn nhất thỏa mãn điều kiện...

    em có bài tập này nhờ các anh chị hướng dẩn giúp

    Cho một số tự nhiên n (trong hệ đếm cơ số 10). Lập chương trình tìm số tự nhiên m lớn nhất
    thoả mãn điều kiện sau:
     Các chữ số của m khi viết trong hệ đếm cơ số 16 đều khác nhau.
     Tổng giá trị các chữ số của m quy đổi ra hệ số đếm thập phân chính là n.

    em chưa hiểu lắm về giới hạn lớn nhất trong bài tập trên. em cần tìm số lớn đến giới hạn nào để kết thúc bài toán ?
    Quote Quote

  2. #2
    Tham gia
    01-03-2009
    Bài viết
    220
    Like
    0
    Thanked 0 Times in 0 Posts
    nếu n có a chữ số thì m<=9999...(có a chữ số 9),đây là giới hạn lớn nhất nhưng ko có ai sử dụng tới giới hạn này đâu ,bài hày hình như dùng thuật toán "sinh" để làm.

  3. #3
    Tham gia
    18-12-2008
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    mình vẩn chưa thực sự hiểu vấn đề này lắm , nếu dùng thuật toán sinh có thể tìm số lớn nhất ntn?

  4. #4
    Tham gia
    27-01-2009
    Location
    Lâm Thao - Phú Thọ
    Bài viết
    150
    Like
    0
    Thanked 4 Times in 4 Posts
    đây là đề thi olympic mà
    do các chữ số của m đều khác nhau nên số lớn nhất là 0xFEDCBA9876543210
    nên số cần nhỏ hơn 15*16/2=120
    nếu không thì không có lời giải
    tôi chỉ viết giải thuật in ra số ở hệ 16
    nếu bạn muốn in ra ở hệ 10 thì tự đổi cơ số nhé
    đây là 1 bài về xử lý số nguyên lớn đấy
    không dễ đâu nhé

    chú ý biên dịch bằng dev-c++

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <windows.h>
    int main(void)
      {
        int n;
        int a[17];
        int sl,t,i,du,max[17];
        printf("n= ");
        scanf("%i",&n);
        t=n;
        i=1;
        sl=0;
        if(n>120)
          {
            printf("Khong co so nao thoa man");
            getch();
            ExitProcess(0);
          }
        while(t>0)
          {
            //printf("%i ",i);
            t-=i;
            ++i;
            ++sl;
          }
        --i;
        if((float)i*(i+1)/2>n)
          sl--;
        //printf("so chu so la %i",sl); 
        t=n;
        for(i=1;i<=sl;++i)
          {
            t-=i;
          }
        du=t;
        ZeroMemory(a,sizeof(a));
        for(i=1;i<=sl;++i)
          {
            a[i]=i;
          }
        ZeroMemory(max,sizeof(max));
        max[sl]=15;
        for(i=sl;i>=1;--i)
          {
            max[i-1]=max[i]-1;
          }
        i=sl;
        while(du>0)
          {
            if(du>(max[i]-a[i]))
              {
                a[i]=max[i];
                du-=max[i];
                --i;
              }
            else
              {
                a[i]+=du;
                du=0;
              }
          }
        printf("Ket qua viet trong he co so 16 la \n");
        for(i=sl;i>=0;--i)
          {
            switch(a[i])
              {
                case 0:
                  printf("0");
                  break;
                case 1:
                  printf("1");
                  break;
                case 2:
                  printf("2");
                  break;
                case 3:
                  printf("3");
                  break;
                case 4:
                  printf("4");
                  break;
                case 5:
                  printf("5");
                  break;
                case 6:
                  printf("6");
                  break;
                case 7:
                  printf("7");
                  break;
                case 8:
                  printf("8");
                  break;
                case 9:
                  printf("9");
                  break;
                case 10:
                  printf("A");
                  break;
                case 11:
                  printf("B");
                  break;
                case 12:
                  printf("C");
                  break;
                case 13:
                  printf("D");
                  break;
                case 14:
                  printf("E");
                  break;
                case 15:
                  printf("F");
                  break;
              }
          }
        getch();
      }

  5. #5
    Tham gia
    27-04-2009
    Location
    Địa Ngục
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạ phải tự làm rồi post code lên cho mọi người xem thử đùng hay sai rồi mời sửa cho bạn chu , ko ai rảnh rỗi ngồi đó ma viết code sẵn cho ban đâu .

  6. #6
    Tham gia
    01-03-2009
    Bài viết
    220
    Like
    0
    Thanked 0 Times in 0 Posts
    1 số có n chữ số thật ra chỉ là hoán vị của n chữ số thui,bạn thử làm theo cách của kidteam xem.

  7. #7
    Tham gia
    22-02-2009
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    bài này khó thật em mới học c++ thui !! Giúp em tìm số lớn nhất trong n số tự nhiên nhé!!!
    Bài này em viết mãi mà không chạy!!

    Viết chương trình tìm số lớn nhất, số lần xuất hiện và vị trí của số lớn nhất từ n số tự nhiên bất kỳ nhập vào từ bàn phím. In kết quả lên màn hình.

Bookmarks

Quy định

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