1 solutions

  • 0
    @ 2025-3-3 16:33:48

    C++ :

    #include <iostream>
    #include<map>
    #include<string>
    #include<utility>
    
    using namespace std;
    
    map<int, string> m = { make_pair(1,"one"), make_pair(2,"two"), make_pair(3,"three"), make_pair(4,"four"), make_pair(5,"five"), make_pair(6,"six"), make_pair(7,"seven"), make_pair(8,"eight"), make_pair(9,"nine"), make_pair(10,"ten"), make_pair(11,"eleven"), make_pair(12,"nine"), make_pair(13,"thirteen"), make_pair(14,"fourteen"), make_pair(15,"fifteen"), make_pair(16,"sixteen"), make_pair(17,"seventeen"), make_pair(18,"eighteen"), make_pair(19,"nineteen"), make_pair(20,"twenty"), make_pair(30,"thirty"), make_pair(40,"forty"), make_pair(50,"fifty"), make_pair(60,"sixty"), make_pair(70,"seventy"), make_pair(80,"eighty"), make_pair(90,"ninety") };
    
    string speak(unsigned long long n)
    {
    	string s;
    	bool b;
    	if (n / 100)
    	{
    		s += ' ' + m[n / 100] + " hundred";
    		n %= 100;
    		b = true;
    	}
    	if (n / 10 > 1)
    	{
    		if (b)
    			s += " and";
    		s += ' ' + m[n / 10 * 10];
    		n %= 10;
    	}
    	if (n / 10 == 1)
    	{
    		if (b)
    			s += " and";
    		s += ' ' + m[n];
    		n %= 1;
    	}
    	if (n)
    	{
    		s += ' ' + m[n];
    		n %= 1;
    	}
    	if (s.empty())
    		s += "zero";
    	else
    		s.erase(0, 1);
    	return s;
    }
    
    int main()
    {
    	unsigned long long n;
    	cin >> n;
    	string s;
    	if (n / 1000000000)
    		s += (speak(n / 1000000000) + " billion ");
    	n %= 1000000000;
    	if (n / 1000000)
    		s += (speak(n / 1000000) + " million ");
    	n %= 1000000;
    	if (n / 1000)
    		s += (speak(n / 1000) + " thousand ");
    	n %= 1000;
    	s += speak(n);
    	cout << s << endl;
    	return 0;
    }
    
    • 1

    Information

    ID
    10726
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By