• PAT1082:Read Number in Chinese


    1082. Read Number in Chinese (25)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is negative. For example, -123456789 is read as "Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu". Note: zero ("ling") must be handled correctly according to the Chinese tradition. For example, 100800 is "yi Shi Wan ling ba Bai".

    Input Specification:

    Each input file contains one test case, which gives an integer with no more than 9 digits.

    Output Specification:

    For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.

    Sample Input 1:
    -123456789
    
    Sample Output 1:
    Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
    
    Sample Input 2:
    100800
    
    Sample Output 2:
    yi Shi Wan ling ba Bai

    思路

    逻辑题,有点恶心。。。
    1.先输入一个数,将单个零和负数的情况先处理掉(后续将1亿的情况也单独处理掉)。
    2.将该数的每一位数字用一个int数组的形式存放。
    3.遍历该数组,根据该数组的每一位的位数和单个数字将对应的字符串插入到一个新的vector中,为0的位数除了是万位或者亿位以外都不用插入位数的字符串。
    4.对于多余的零做处理,并输出每一位的数字和位数。

    代码
    #include<iostream>
    #include<vector>
    using namespace std;
    vector<string> n={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    vector<string> digit={"","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};
    
    using namespace std;
    int main()
    {
       vector<string> res;
       vector<int> number;
       int num,index;
       cin >> num;
       if(num == 0)
       {
          cout << "ling" << endl;
          return 0;
       }
       else if( num < 0)
       {
           cout << "Fu ";
           num = -num;
       }
       while(num != 0)
       {
           number.push_back(num % 10);
           num /= 10;
       }
    
       for(index = 0;index < number.size() && number[index] == 0;index++);
       if(index == 8)
       {
           cout << n[number[index]] << " Yi";
           return 0;
       }
       for(int i = index;i < number.size();i++)
       {
           if(i != 0 && (number[i] != 0 || i == 4 || i == 8))
              res.push_back(digit[i]);
           res.push_back(n[number[i]]);
       }
       for(int i = res.size() - 1;i >= 0;i--)
       {
           if(i != res.size() - 1)
            cout << " ";
           int zerocnt = 0;
           while( i >= 0 && res[i] == "ling")
           {
               i--;
               zerocnt++;
           }
           if(zerocnt > 0 && res[i] != "Wan")
           {
               cout << "ling ";
           }
           cout << res[i];
       }
    }
    
    
    

      

     
  • 相关阅读:
    js积累点
    org.hibernate.NonUniqueObjectException
    SSH框架下的表单重复提交
    ajax传输中文参数乱码,本地使用tomcat不乱码,liunx+weblogic乱码
    启动weblogic报错:string value '2.4' is not a valid enumeration value for web-app-versionType in namespace http://java.sun.com/xml/ns/javaee
    weblogic启动项目,设置内容、设置的数据源链接不生效
    myeclipse编译弹框:The builder launch configuration could not be found
    tomcat启动项目报错:The specified JRE installation does not exist
    Mac上的jdk
    前端
  • 原文地址:https://www.cnblogs.com/0kk470/p/7903587.html
Copyright © 2020-2023  润新知