• pat解题报告【1082】


    1082. Read Number in Chinese (25)

    时间限制  
    400 ms
    内存限制  
    32000 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
    
     
    简单的模拟。仅仅是过程描写叙述有点啰嗦。
    首先这句话什么意思  Note: zero ("ling") must be handled correctly according to the Chinese tradition
    什么叫Chinese tradition,事实上就是对0的特殊处理。
    【1】尾部的0不发音
    【2】多个连续的0,仅仅发一个音
    【3】多个不连续的0。都要发音
    【4】大于4位的数肯定要发 Wan 音
    【5】大于8位的数一定要发 Yi 音
    并且还有个规律: Shi Bai Qian 这三个音循环出现。

     
    Ac代码:
     
    // pat-1082.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    #include "iostream"
    #include "string"
    #include "algorithm"
    #include "vector"
    #include "stack"
    
    using namespace std;
    stack<string> ans;
    string num[]={"ling", "yi" ,"er" , "san" , "si" ,  "wu",  "liu" , "qi",  "ba",  "jiu"};
    string pos[]={ "Shi","Bai","Qian", "Wan","Yi" };
    int main()
    {
    	long int n=0;
    	bool firstout=true;
    	cin>>n;
    	if (n==0)
    	{
    		cout<<"ling";
    		goto end;
    	}
    	if (n<0)
    	{   
    		cout<<"Fu";
    		firstout=false;
    		n=-(n);
    	}
    	int cnt=0;
    	bool wan_flag=false;
    	bool zero=false;
    	bool first=true;
    	while(n)
    	{
    	  int temp=n%10;
    	  //0 特殊处理
    	  if (temp==0)
    	  { 
    		  if (cnt==3)
    		  {
    			  wan_flag=true;
    		  }
    		  n/=10;
    		  if (!first)
    		  {  
    			  cnt++;
    		  }
    	      first=false;
    		  if (zero)//第一次遇到0
    		  {
    			  ans.push(num[0]);
    			  zero=false;
    			  continue;
    		  }
    		  else
    		  {
    			  continue;
    		  }
    	  }
    	  zero=true;
    	  if(first)//忽略个位
    	  {
    		    ans.push(num[temp]);//yi er san si ~~~~~
    			 n/=10;
    			  first=false;
    			 continue;
    	  }
    	 if(cnt<7)
    	 {  
    		 if (wan_flag)
    		 {
    			 wan_flag=false;
    			 ans.push(pos[3]);
    		 }
    	     ans.push(pos[cnt%4]);//shi bai qian wan 
    	  }
    	 else
         {
    	  ans.push(pos[4]);//yi
    	 }
    	 
    	  ans.push(num[temp]);//yi er san si ~~~~~
    	 
    	  n/=10;
    	  cnt++;
    	 
    	}
    	while (!ans.empty())
    	{
    		string temp=ans.top();
    		ans.pop();
    		if (firstout)
    		{
    			firstout=false;
    			cout<<temp;
    			continue;
    		}
    		cout<<" "<<temp;
    	}
    end:	return 0;
    }
    
    

     
     
  • 相关阅读:
    (三十四)在所有的添加方法上记录一下(添加操作)
    (三十三)订单管理-修改订单状态
    (三十二)订单管理-查询订单详情
    (三十一)订单管理-查询订单
    (三十)商品管理-添加商品(上传图片)
    1.python的安装
    require(): open_basedir restriction in effect. File(/www/wwwroot/xcx/zerg/thinkphp/start.php) is not within the allowed path(s): (/www/wwwroot/xcx/zerg/public/:/tmp/:/proc/) in /www/wwwroot/xcx/zerg/p
    phpstorm-xdebug的安装
    swoole在线聊天学习笔记
    18.swoole学习笔记--案例
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6875158.html
Copyright © 2020-2023  润新知