3.スイカスイカスイカスイカスイカ水?シーザーのパスワード、小数の和、小数は小数をプラスして、整数の降順は並べて、最も小数を削除して、キーボードによって、コラッツは推測して、ハッシュの数、行列の加算
13384 ワード
以下のすべての問題はプログラマから提供されています.ありがとうございます.フルカスタマイズ 6キーボードを打つ問題:時間がかかります.
1.スイカスイカスイカスイカスイカ水?
nは、長さが10000以下の自然数である. パリティで出力されます. 2.起動パスワード
スペースはいくら押しても空いています. sには、小文字、大文字、スペースのみが含まれます. sの長さは8000未満です. nは1以上25以下の自然数です. という問題を26に分けた場合、残りの値で解くと簡単です. 3.薬水の和
nは0または3000以下の整数です. を等しいで割る! 4.数値桁数の追加
桁で加算し、文字列でアクセスすると解きやすい! 5.整数降順で配置
nは、8000000000を超える自然数です. to stringを利用して、簡単に解けました. 6.最小の数を除く
arrは、長さが1より大きい配列である. インデックスi,jについて、i≠jの場合、arr[i]≠arr[j]である.
'''
#include
#include
#include
#include
using namespace std;
vector solution(vector arr) {
vector answer;
int min = *min_element(arr.begin(), arr.end());
arr.erase(find(arr.begin(),arr.end(), min));
answer = arr;
if(answer.size() == 0)
answer.push_back(-1);
return answer;
}
'''
の最高値を得るには、for構文を使用してすべての要素を比較しますが、 コード*min要素を使用して最小値を求めます. arr.erase(find(arr.begin(),arr.end(), min)) findで必要なインデックスを取得し、すぐに削除できます. 7.[Kaka実習生]キーボードをクリック
numbers配列のサイズは1000を超えません. numbers配列要素の値は0または9以下の整数です. 手は「左」または「右」です. 「左」は左利き、「右」は右利きを表す. 左手親指を使用する場合はL、右手親指を使用する場合はRとなり、順番に接続され、文字列形式で返されます.2,5,8,0以外の数字は指定の指で押すしかないので、LかRかを直接処理できます. で、必要に応じて2,5,8,0を押します. には2つのケースがあり、 今私の指は、1,4,7、*の上に あります.
もし私が今指の位置も2、5、8、0の上にいたら.指は2、5、8、0の上にある必要があり、垂直に移動するだけであるため、 というコードを使用して解決する. 1、4、7、*の上にある場合は、もう一度移動して垂直に移動する必要があるので、 残りのは移動回数を比較して印刷します. 8.コーラの推測
1-1. 入力した数字が偶数の場合は2に分けられます. 1-2. 入力した数字が奇数の場合、3を掛けて1を加算します.
結果が の数字について、1まで同じ操作を繰り返します. 例えば、入力された数字が6であれば、6→3→10→5→16→8→4→2→1の計8回が1となる.上記の操作を何回繰り返すかを示す関数を返します.解決策を完了します.ただし、タスクを500回繰り返しても1未満の場合は、-1を返します.
入力された数値numは1または800000未満の整数です.
は簡単だと思いますが、問題には罠があります. メガ変数で受信したnumはint型でnum*3を繰り返す必要があるため、範囲外になる可能性があります. に対してlong longに変換される. 9.ハザード数
xは、1または10000より大きい整数である. 省略
10.行列の加算
行列arr 1、arr 2の行および列の長さは500を超えない. メガ変数で与えられたarr 1を答えとする腕立て伏せ. これはユニークなアイデアですが、コードは想像以上に簡潔です. push backを送り返したarr 1は答えを変えても変わらない. push back時の値が を超える
1.スイカスイカスイカスイカスイカ水?
問題の説明
長さはn「スイカスイカスイカスイカ数…」関数を完了し、同じモードを維持する文字列を返します.例えば、nが4であれば「スイカ数」、3であれば「スイカ数」を返します.
せいげんじょうけん
に答える
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
vector <string> water_melon = {"수","박"};
for (int i = 0; i < n; i++)
answer += water_melon[i % 2];
return answer;
}
説明:
2.起動パスワード
問題の説明
1つの暗号化方法は、1つの文の各アルファベットを一定の距離で伸ばし、別のアルファベットに変換することです.例えば、「AB」は1で「BC」、3で「DE」を表す.「z」が1に等しいと「a」になります.文字列sと距離nを入力し、sがnの暗号文の関数を生成し、ソリューションを完了します.
せいげんじょうけん
に答える
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
for(int i = 0; i < s.size(); i++)
{
if(s[i] >= 'A' && s[i] <= 'Z'){
answer += 'A' + (s[i] - 'A' + n) % 26;
}
else if(s[i] >= 'a' && s[i] <= 'z')
answer +='a' + (s[i] - 'a' + n) % 26;
else
answer += s[i];
}
return answer;
}
説明:
3.薬水の和
問題の説明
整数nを受け入れ、nのすべての約数加算値を返す関数は、解を完了してください.
せいげんじょうけん
に答える
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++)
{
if(n % i == 0)
answer+= i;
}
return answer;
}
説明:
4.数値桁数の追加
問題の説明
自然数Nが与えられた場合,Nの各数の和を求め,返される解関数を求める.
たとえば、N=123の場合、1+2+3=6を返します.
せいげんじょうけん
Nの範囲:10000000以下の自然数
に答える
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
string save = to_string(n);
for(int i = 0; i < save.size(); i++)
{
answer += save[i] - '0';
}
return answer;
}
説明:
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
string save = to_string(n);
for(int i = 0; i < save.size(); i++)
{
answer += save[i] - '0';
}
return answer;
}
5.整数降順で配置
問題の説明
関数解は、パラメータ入力として整数nを受け入れる.nの各ビット数を大きいから小さい順に並べ替えてください.例えば、nが118372の場合、873211が返される.
せいげんじょうけん
に答える
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(char a, char b)
{
return a > b;
}
long long solution(long long n) {
long long answer = 0;
string save = to_string(n);
sort(save.begin(), save.end(),compare);
answer = stol(save);
return answer;
}
説明:
6.最小の数を除く
問題の説明
整数の配列を保存し、arrから最小数の配列を削除する関数を返します.解決策を完了してください.ただし、返される配列が空の配列の場合は、配列に-1を入力して返します.たとえばarrが[4,3,2,1]の場合は[4,3,2]を返し、[10]の場合は[1]を返します.
せいげんじょうけん
に答える
'''
#include
#include
#include
#include
using namespace std;
vector solution(vector arr) {
vector answer;
int min = *min_element(arr.begin(), arr.end());
arr.erase(find(arr.begin(),arr.end(), min));
answer = arr;
if(answer.size() == 0)
answer.push_back(-1);
return answer;
}
'''
説明:
7.[Kaka実習生]キーボードをクリック
問題の説明
スマートフォンの電話キーボードの各スペースには、次の数字があります.
この電話のキーボードには、左手と右手の親指で数字を入力したいだけです.
最初の左手親指は*キーボードから始まり、右手親指は#キーボードの位置から始まり、親指を使うルールは以下の通りです.
親指は上下左右4方向にしか移動できず、キーボードを動かすセル距離は1です.
左の列に1、4、7の数字を3つ入力する場合は、左手親指を使用します.
右の列の3つの数字3、6、9を入力する場合は、右手親指を使用します.
中間列の4つの数字2、5、8、0を入力する場合は、2つの親指の現在のキーボード位置に近い親指を使用します.
4-1. 2つの親指の距離が等しい場合は、右利きは右手親指、左利きは左手親指を使用します.
solution関数を完了して順序番号を示す配列番号、左利きか右利きかを示す文字列番号をパラメータとすると、各番号の親指が左手か右手かを示す連続文字列形式で返されます.
[制限]
に答える
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
string solution(vector<int> numbers, string hand) {
string answer = "";
int LR_pos[] = {10,10};
int value[] = {0, 0};
int LR_count[] = {0 ,0};
for(int i = 0; i < numbers.size(); i++)
{
if(numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7)
{
answer += "L";
LR_pos[0] = numbers[i];
}
else if(numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9)
{
answer += "R";
LR_pos[1] = numbers[i] - 2;
}
else
{
if (0 == numbers[i])
numbers[i] = 11;
for (int j =0; j < 2; j++)
{
if(LR_pos[j] == 2 || LR_pos[j] == 5 || LR_pos[j] == 8 || LR_pos[j] == 11)
LR_count[j] = abs(LR_pos[j] - numbers[i]) / 3;
else
{
LR_count[j] = (abs(LR_pos[j] + 1 - numbers[i]) / 3) + 1;
}
}
if (LR_count[0] < LR_count[1])
{
LR_pos[0] = numbers[i];
answer += "L";
}
else if(LR_count[0] > LR_count[1])
{
LR_pos[1] = numbers[i];
answer += "R";
}
else
if (hand == "right")
{
LR_pos[1] = numbers[i];
answer += "R";
}
else
{
LR_pos[0] = numbers[i];
answer += "L";
}
}
}
return answer;
}
説明:
もし私が今指の位置も2、5、8、0の上にいたら.
LR_count[j] = abs(LR_pos[j] - numbers[i]) / 3;
LR_count[j] = (abs(LR_pos[j] + 1 - numbers[i]) / 3) + 1;
で解決します.8.コーラの推測
問題の説明
1937年にCollatzが提案したこの推測は,与えられた数が1になる前に次のタスクを繰り返し実行すれば,すべての数を1にすることができるということである.操作は次のとおりです.
結果が
せいげんじょうけん
入力された数値numは1または800000未満の整数です.
に答える
#include <string>
#include <vector>
using namespace std;
int solution(int num) {
int answer = -1;
int i = 0;
long long save = (long long)num;
for (answer = 0; save != 1 && answer < 502; answer++)
{
if(save % 2 == 0)
save = save / 2;
else
save = (save * 3) + 1;
}
if (answer > 500)
answer = -1;
return answer;
}
説明:
9.ハザード数
問題の説明
正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.
せいげんじょうけん
に答える
#include <string>
#include <vector>
using namespace std;
bool solution(int x) {
bool answer = true;
string tmp;
int value = 0;
tmp = to_string(x);
for(int i; i < tmp.size(); i++)
{
value += tmp[i] - '0';
}
if (x % value != 0)
answer = false;
return answer;
}
説明:
10.行列の加算
問題の説明
行列の加算は、2つの同じ行列の同じ行、同じ列の値を加算した結果です.2つのマトリクスarr 1とarr 2を入力し、マトリクス加算結果の関数を返し、解を完了します.
せいげんじょうけん
に答える
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
for (int i = 0; i < arr1.size(); i++)
{
answer.push_back(arr1[i]);
for (int j = 0; j< arr1[i].size(); j++)
{
answer[i][j] += arr2[i][j];
}
}
return answer;
}
説明:
Reference
この問題について(3.スイカスイカスイカスイカスイカ水?シーザーのパスワード、小数の和、小数は小数をプラスして、整数の降順は並べて、最も小数を削除して、キーボードによって、コラッツは推測して、ハッシュの数、行列の加算), 我々は、より多くの情報をここで見つけました https://velog.io/@hey-chocopie/수박수박수박수박수박수시저-암호약수의-합자릿수-더하기정수-내림차순으로-배치하기제일-작은-수-제거하기키패드-누르기콜라츠-추측하샤드-수-행렬의-덧셈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol