• PAT乙级1006


    题目链接

    https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

    题解一

    这道题其实很简单,获取用户输入后,判断数字的位数,根据位数的不同,再获取百位、十位、个位的数字,然后据其进行字符串拼接,最后输出。

    啧,太久没有写C++代码了,下面代码里的numArr可以用string类型的,而且你看完题解二会觉得我是不是傻了。

    // PAT BasicLevel 1006
    // https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int getbitnum(int num);
    
    int main()
    {
        // 获取用户输入的数字
        int num=0;
        cin >>num;
    
        // 获取数字位数
        int numOfBits=getbitnum(num);
    
        // 存储输出内容
        string str="";
    
        // 十个数字,C++的字符串不能直接加数字进行拼接
        char numArr[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
    
        // 生成输出内容所用的中间变量
        switch (numOfBits)
        {
        case 3:{
            int bai = num / 100;
            for (int i = 0; i < bai; i++)
            {
                str += "B";
            }
            num %= 100;
        }
            
        case 2:{
            int shi = num / 10;
            for (int i = 0; i < shi; i++)
            {
                str += "S";
            }
            num %= 10;
        }
            
        case 1:
            for(int i=0;i<num;i++){
                str +=numArr[i];
            }
        }
    
        // 输出结果
        cout << str;
        return 0;
    }
    
    // 获取数字的位数
    int getbitnum(int num)
    {
        // 默认一位数
        int numOfBits=1;
    
        if(num>99){ // 三位数
            numOfBits=3;
        }else if(num>9){    //两位数
            numOfBits=2;
        }
        return numOfBits;
    }
    

    题解二

    这是网上搜到的题解,比题解一好多了。我傻了我傻了。

    // PAT BasicLevel 1006
    // https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    
    int main()
    {
        // 获取用户输入的数字
        int num=0;
        cin >>num;
    
        // 得到每位数字
        int bai = num / 100;
        int shi = num % 100 / 10;
        int ge = num % 10;
        
        // 输出结果
        for (int i = 0; i < bai; i++){
            cout << 'B';
        }
        
        for (int i = 0; i < shi; i++)
        {
            cout << 'S';
        }
        
        for(int i=1;i<=ge;i++){
            cout << i;
        }
    
        //system("pause"); 
        return 0;
    }
    

    作者:@臭咸鱼

    转载请注明出处:https://www.cnblogs.com/chouxianyu/

    欢迎讨论和交流!


  • 相关阅读:
    吴裕雄--天生自然 Zookeeper学习笔记--Zookeeper 权限控制 ACL
    【机器学习】机器学习基础
    【QT】利用pyqt5实现简单界面
    【Mathtype】安装Mathtype后,word无法粘贴的问题
    【优化方法】牛顿法
    博客样式设置
    2018.8.28 练习赛
    2018.8.27 练习赛
    2018.8.26 练习赛
    2018.8.25 练习赛
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/11296672.html
Copyright © 2020-2023  润新知