Hiển thị kết quả từ 1 đến 3 / 3
  1. #1
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts

    Bài toán điền chữ số : QUANG + TRUNG = TAYSON

    A - Bài toán trên là đề bài thi học sinh giỏi toán quốc gia, khối lớp 9, năm 1979.

    B - Bài toán này có thể viết bằng nhiều NNLT, có thể tham khảo thêm ở : chuyển chuỗi thành số

    C - code viết bằng c#

    Code:
    using System;
    
    //biên dịch dòng lệnh command mode
    //csc TaySon2.cs
    
    namespace TaySon{
        class Program{
            //const int A = 0, G = 1, N = 2, O = 3, Q = 4, R = 5, S = 6, T = 7, U = 8, Y = 9;
     
            static int Quang(int[] p){
                return 10000 * p[4] +
                        1000 * p[8] +
                         100 * p[0] +
                          10 * p[2] +
                               p[1];
            }
            static int Trung(int[] p){
                return 10000 * p[7] +
                        1000 * p[5] +
                         100 * p[8] +
                          10 * p[2] +
                               p[1];
            }
            static int TaySon(int[] p){
                return 100000 * p[7] +
                        10000 * p[0] +
                         1000 * p[9] +
                          100 * p[6] +
                           10 * p[3] +
                                p[2];
            }
     
            static void Main(){
                int[] p = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                //int k = 0;
                string digits = "AGNOQRSTUY"; //set of "QUANG" + "TRUNG" + "TAYSON"
                Console.WriteLine("\tInput:\nQUANG + TRUNG = TAYSON\n");
                //
                do {
                    //k++;
                    if (p[4] != 0 && p[7] != 0){ //Giảm tính toán : 2 * 9!
    					int x = Quang(p), y = Trung(p), z = TaySon(p);
    					if( x + y == z){
    						Console.WriteLine("\tOutput:\n{0} + {1} = {2}", x, y, z);
    						Console.Write("\tWith:");
    						for (int i = 0; i < 10; i++) Console.Write("\n{0} = {1}", digits[i], p[i]);
    					}
                    }
                }
                while (hoanVi(p));
                //Console.WriteLine("\nDem = {0}", k);
                Console.Write("\n\nDone, bye"); Console.ReadLine();
            }
            static bool hoanVi(int[] arr){
                int n = arr.Length, k = -1;
                for (int i = 1; i < n; i++)
                    if (arr[i - 1] < arr[i]) k = i - 1; 
                if (k == -1){
                    for (int i = 0; i < n; i++) arr[i] = i;
                    return false; //Done
                }
    			//Next
                int j = k + 1;
                for (int i = j; i < n; i++)
                    if (arr[k] < arr[i]) j = i;
                //swap
                int t = arr[k]; arr[k] = arr[j]; arr[j] = t;
     
                Array.Reverse(arr, k + 1, n - (k + 1));
                return true;
            }
        }
    }
    Bạn có thể test chạy xem kết quả ở : Solution
    Được sửa bởi Van8Hien62 lúc 12:28 ngày 04-07-2016 Reason: Định dạng code
    DT 0906837125
    Quote Quote

  2. #2
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts
    Có công cụ dịch c++ sang c# và ngược lại, c# sang c++, xem thêm : delphi2cs, cpp2cs, cs2cpp, ...
    DT 0906837125

  3. #3
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts
    Cách giải bằng tay (với giấy và bút/viết)

    http://diendan.congdongcviet.com/thr...-so.cpp/page3/
    DT 0906837125

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
  •