4.文字列を整数に変換し、埋め込み、奇妙な文字を作成し、自然数を配列に反転し、整数平方根、偶数と奇数、最大公因数と最小公倍数を判別し、平均値を求め、携帯電話番号を遮断し、xから離れたn個の数字(回線種別4)


以下のすべての問題はプログラマから提供されています.ありがとうございます.

1.文字列を整数に置換


問題の説明


文字列sを数値に変換した結果の関数を返します.

せいげんじょうけん

  • sの長さは1または5以下です.
  • sの一番前に記号(+,-)があるかもしれません.
  • sは、シンボルと数値のみから構成されます.
  • sは「0」で始まりません.
  • に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    int solution(string s) {
        int answer = 0;
        answer = stoi(s);
        return answer;
    }

    2.内在的


    問題の説明


    パラメータは、2つの長さが等しい1次元整数配列a,bである.解関数を完了し、aとbの内積を返してください.
    このとき、aとbの内積a[0]b[0]+a[1]b[1]+...+a[n-1]*b[n-1].(nはa,bの長さ)

    せいげんじょうけん

  • a、bの長さは1000より大きい.
  • a、bのすべての数は-1000または1000以下である.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    int solution(vector<int> a, vector<int> b) {
       int answer = 0;
       for (int i = 0; i < a.size(); i++)
       {
           answer += a[i] * b[i];
       }
       return answer;
    }

    説明:

  • 省略

    3.奇妙な文字を作成


    問題の説明


    文字列sは、1つ以上の単語から構成される.各単語は1つ以上のスペース文字で区切られます.各単語の偶数の2番目のアルファベットは大文字で、奇数の2番目のアルファベットは小文字で置換された文字列を返す関数で、解決策を完了します.

    せいげんじょうけん

  • 文字列全体のパリティインデックスではなく、単語(スペース単位)に基づいてパリティインデックスを決定する必要があります.
  • 最初の文字は0番目のインデックスで偶数文字で処理する必要があります.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    string solution(string s) {
        string answer = "";
        int j = 0;
        for (int i = 0; i < s.size(); i++)
        {
            if (isalpha(s[i]))
            {
                if(j % 2 == 0)
                    s[i] = toupper(s[i]);
                else if(j % 2 == 1)
                    s[i] = tolower(s[i]);
                j++;
            }
            else
                j = 0;
        }
        return answer = s;
    }

    説明:

  • パリティは残りの値で高速です!
  • 4.自然数を逆さに並べる


    問題の説明


    自然数nを逆さまにして、各数字を要素の配列で返します.例えば、nが12345の場合、[5,4,3,2,1]が返される.

    せいげんじょうけん

  • nは10000000以下の自然数です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    vector<int> solution(long long n) {
        vector<int> answer;
        string save;
        save = to_string(n);
        for(int i = 0; i < save.size(); i++)
        {
            answer.push_back(save[save.size() - i - 1] - '0');
        }
        return answer;
    }

    説明:

  • 桁は文字列で扱いやすい!
  • 5.整数平方根の判別


    問題の説明


    任意の正の整数nについて、nがある正の整数xの二乗であるか否かを判断しようとする.
    nが正の整数xの平方である場合、x+1の平方を返し、nが正の整数xの平方でない場合、-1を返す関数を完了する.

    せいげんじょうけん

  • nは正の整数で、1より大きく、5000000000000未満です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    #include <cmath>
    using namespace std;
    
    long long solution(long long n) {
        long long answer = -1;
        for (long long i = 1; i * i <= n; i++)
        {
            if (i * i == n)
                answer = (i + 1) * (i + 1);
        }
        // if (sqrt(n) == floor(sqrt(n)))
        // {
        //     answer = (sqrt(n) + 1) * (sqrt(n) + 1);
        // }
        return answer;
    }

    説明:

  • 注意すべき点は、for文で解く場合、iをintに設定しないと爆発することです.
  • 6.偶数と奇数


    問題の説明


    整数numが偶数の場合は「Even」、奇数の場合は「Odd」の関数を返します.解決策を完了してください.

    せいげんじょうけん

  • numはint範囲の整数です.
  • 0は偶数です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    string solution(int num) {
        string answer = "Even";
        if (num % 2 == 1)
            answer = "Odd";
        return answer;
    }

    説明:

  • 省略

    7.最大公倍数と最小公倍数

  • 問題の説明
    2つの数を入力し、2つの数の最大公約数と最小公約数の関数を返し、解を完了します.アレイの先頭にある最大公約数、次に最小公約数を返します.例えば、2つの数3および12の最大承諾数は3であり、最小公倍数は12であるため、ソリューション(3、12)は[3、12]を返さなければならない.
  • せいげんじょうけん

  • の2つの数字はいずれも100000を超える自然数である.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    vector<int> solution(int n, int m) {
        vector<int> answer;
        for(int i = n < m ? m : n;  1 <= i; i--)
        {
            if(n % i == 0 && m % i == 0)
            {
                answer.push_back(i);
                break;
            }
        }
        answer.push_back(n * m / answer[0]);
        return answer;
    }

    説明:

  • a、bの最小公倍数は、a*b/a、bの最大公倍数である.
  • 8.平均値を求める


    問題の説明


    整数を含む配列arrの平均値を返す関数を完了します.

    せいげんじょうけん

  • arrは、長さが1より大きく、100より小さいアレイである.
  • arrの要素は10000または10000以下の整数です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    double solution(vector<int> arr) {
        double answer = 0;
        for (int i = 0; i < arr.size(); i++)
        {
            answer += arr[i];
        }
        return answer / arr.size();
    }

    説明:

  • 省略

    9.携帯電話番号の遮断


    問題の説明


    プログラマのモバイルデバイスは、個人情報を保護する通知を送信すると、お客様の電話番号の一部を遮断します.
    電話番号に文字列phone numberが付与されている場合、電話番号の後ろ4桁を除いて、他の数字がすべて*で上書きされている文字列は、関数に戻って解決策を完了してください.

    せいげんじょうけん

  • sは、長さが4より大きく、20より小さい文字列です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    string solution(string phone_number) {
        string answer = phone_number;
        for (int i = 0; i < phone_number.size() - 4; i++)
            answer[i] = '*';
        return answer;
    }

    説明:

  • に必要な部分のみをロールバック処理した.
  • 間隔が10.xのn個の数字


    問題の説明


    関数解は、整数xと自然数nを含むリストを返さなければなりません.xからxで増加するnの数字です.次の制限条件を見て、条件を満たす関数、解を完成してください.

    せいげんじょうけん

  • xは、−1000000または1000000以下の整数である.
  • nは1000以下の自然数です.
  • I/O例



    に答える

    #include <string>
    #include <vector>
    
    using namespace std;
    
    vector<long long> solution(int x, int n) {
        vector<long long> answer;
        if(n > 0)
            answer.push_back(x);
        for (int i = 1; i < n; i++)
        {
            answer.push_back(answer[i - 1] + x);
        }
        return answer;
    }

    説明:

  • 省略