记水题两道

记水题两道,第1张

1

输入一个十进制整数,输出对应的七进制结果.

例如:

Input1:

20

Output1:

26

Input2:

-100

Output2:

-202

题解:

  • 根据辗转相除法,输入 num,每次将 num7 取余,再将 num7,直到 num0 为止,得到的余数加入到一个字符串中,对这个字符串翻转之后就是 num 对应的 7 进制数.
  • 特别注意一下对正负号的处理.

C++ code:

#include 

using namespace std;

int main() {
    int num;
    cin >> num;
    int symbol = 1;
    if (num < 0) {
        symbol = -1;
        num = -num;
    }
    string strAns = "";
    while (num > 0) {
        strAns += to_string(num - 7 * (int)(num / 7));
        num /= 7;
    }
    reverse(strAns.begin(), strAns.end());
    cout << symbol * stoi(strAns) << endl;
    return 0;
}
2

给定一个 N × M 大小的二维矩阵,再给定一个整数 threshold,如果矩阵中的某个数小于或等于 threshold,则将对应的行和列上的所有数变为 threshold,输出对应的矩阵.

输入第一行分别为 MNthreshold

接下来的 N 行,每行有 M 个输入,表示二维矩阵.

输出对应的矩阵.

例如:

Input:

3 2 2
1 2 3
4 5 6

Output:

2 2 2
2 2 6

题解:

  • 扫描原矩阵,用两个哈希表分别记录小于等于 threshold 的元素所在的行和列;
  • 对于结果矩阵,如果其所在的行和列有其中之一在哈希表中可以查到,则该位置的元素值为 threshold,否则则为原数组中对应位置元素的值.

C++ code:

#include 

using namespace std;

int main() {
    int M, N, threshold;
    vector> matrix;
    vector> ans;
    unordered_set hashRows, hashCols;
    cin >> M >> N >> threshold;
    matrix.resize(N, vector(M, 0));
    ans.resize(N, vector(M, 0));
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            cin >> matrix[i][j];
            if (matrix[i][j] <= threshold) {
                hashRows.insert(i);
                hashCols.insert(j);
            }
        }
    }
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            if (hashRows.count(i) || hashCols.count(j)) {
                ans[i][j] = threshold;
            } else {
                ans[i][j] = matrix[i][j];
            }
        }
    }
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            cout << ans[i][j];
            if (j < M - 1) {
                cout << ' ';
            }
        }
        cout << endl;
    }
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/727781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存