zoukankan      html  css  js  c++  java
  • PTA 乙级 1019 数字黑洞 (20分)

     调库大法,将输入的数字转化为字符串(to_string),然后进行排序(sort进行从小到大的排序,reverse对进行sort之后的数字进行逆序)

    (C++中,可以进行 类=类 的操作,实现复制,而java不可以,java需要特殊的函数来进行类的复制)

    注意:

    • 每个数字必须输出四位,所以需要0补全
    • 有直接输入n = 6174的情况,所以要用do-while循环(至少执行一次)
     1 #include<iostream>
     2 #include<string>
     3 #include<algorithm>
     4 #include<iomanip>
     5 
     6 using namespace std;
     7 
     8 string getmaxmin(int n, bool flag) {
     9     string num;
    10     num = to_string(n);                //数字转化为字符串
    11     while (num.size() < 4) {
    12         num += '0';
    13     }
    14     sort(num.begin(), num.end());    //sort进行从小到大的排序(min)
    15     if (flag == 1) {
    16         reverse(num.begin(), num.end());//reverse对排序结果进行逆序(max)
    17     }
    18     return num;
    19 }
    20 
    21 int main() {
    22     int n = 0;
    23     string max, min;
    24     cin >> n;
    25     do{
    26         max = getmaxmin(n, 1);
    27         min = getmaxmin(n, 0);
    28         n = stoi(max) - stoi(min);    //字符串转化为数字
    29         cout << max << " - " << min << " = " << 
    30             setw(4) << setfill('0') << n << endl;    //需要输出位补齐
    31     } while (n != 6174 && n != 0);
    32     return 0;
    33 }

    一直在学java,C++没接触多少,调库什么的都是现学现找的,有不对的地方还请指正

  • 相关阅读:
    Linux命令之乐--nmap
    shell脚本学习总结09--分支与循环结构
    shell脚本学习总结08--比较与测试
    Linux命令之乐--test
    Linux命令之乐--read
    shell脚本学习总结06--数学计算
    Linux命令之乐--time
    Linux命令之乐--expr
    Linux命令之乐--seq
    Linux命令之乐--rename
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13252902.html
Copyright © 2011-2022 走看看