This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

1

dammage

Rìu Chiến
bạn nên bỏ code vô trong tag code cho dễ đọc

kiểm tra số nguyên tố với chính phương thì dễ quá trên mạng có đầy rồi, bài này chủ yếu xử lí cái chuỗi moves thôi, lấy kí tự hướng rồi lấy giá trị đi kèm với nó
up thì y cộng với giá trị, down thì y trừ giá trị
left thì x trừ với giá trị, right thì x cộng giá trị

cũng lâu rồi tui không đụng tới mấy cái bài tập sinh viên này nữa nên tui viết nhanh thôi
C++:
#include <cmath>
#include <iostream>
#include <string>

using namespace std;

/******************************************************************************
* Support Functions: these functions below are optional. If you want your code
to be clearer, you can implement them. However if you
dont know how to use funtion in programming, dont worry,
you dont have to implement them, and you just add a comment
in each of them.
*******************************************************************************/
int move(string moves)
{
    /*TODO: add your code here*/
}

bool isPrime(int n)
{
    /*TODO: add your code here*/
}

bool isSquared(int n)
{
    /*TODO: add your code here*/
}

int main()
{
    string moves;
    int distance;
    bool primality, squared;

    /// =======================================================
    /*
    The following code initializes variable `moves`
    */
    /// BEGIN TESTCASE
    cin >> moves;
    /// END TESTCASE
    /*---------------------------------
    * Calculate the distance
    * Remember to assign calculated value to variable `distance`
    */
    int x = 0, y = 0;
    char dir = 0;
    string value = "0";
    for ( std::string::iterator it = moves.begin(); it != moves.end(); ++it)
    {
        if(*it == 'U' || *it == 'D' || *it == 'L' || *it == 'R' )
        {
            int temp = stoi(value, nullptr, 10);
            value = "0";
            switch(dir)
            {
                case 'U':    y += temp;    break;
                case 'D':    y -= temp;    break;
                case 'L':    x -= temp;    break;
                case 'R':    x += temp;    break;
            }

            dir = *it;
        }
        else
            value += *it;
    }
    int temp = stoi(value, nullptr, 10);
    switch(dir)
    {
        case 'U':    y += temp;    break;
        case 'D':    y -= temp;    break;
        case 'L':    x -= temp;    break;
        case 'R':    x += temp;    break;
    }
    cout << x << " " << y << endl;
    distance = round(sqrt(x*x + y*y));

    /*---------------------------------*/
    cout << "Khoang cach xe da di chuyen tu vi tri ban dau toi diem hien tai: "
        << distance << '\n';

    /*---------------------------------
    * Check if distance is prime
    * Remember to assign appropriate value to variable `primality`
    */
    primality = true;
    if (distance <= 1)
    {
        primality = false;
    }
    else
    {
        for (int i = 2; i <= sqrt(distance); i++)
        {
            if (distance % i == 0)
            {
                primality = false;
                break;
            }
        }
    }

    /*---------------------------------*/
    /*---------------------------------
    * Check if distance is squared
    * Remember to assign appropriate value to variable `squared`
    */
    if(distance < 1)
        squared = false;
    else
    {
        int i = sqrt(distance);
        if(i*i != distance)
            squared = false;
        else
            squared = true;
    }

    /*---------------------------------*/
    if (primality)
    {
        cout << "So " << distance << " la so nguyen to\n";
    }

    if (squared)
    {
        cout << "So " << distance << " la so chinh phuong\n";
    }

    return 0;
}
đã test bằng dev c, chuỗi test
R5L2D8L1R10L4U5L5U18U7D0D6
kết quả
 

ThiGod

Gà con
mình cảm ơn nha
 

Trong Le

Rìu Vàng
sửa lại cái tiêu đề bài viết và nêu vấn đề cho đàng hoàng, tử tế đi bạn!