题解:UVA10101 Bangla Numbers

The_Best_OIer

2024-11-15 15:40:02

Solution

题解:UVA10101 Bangla Numbers

萌新的第一篇题解,也是靠着大佬的指导才完成的,勿喷。

话不多说先讲思路,这道题的意思是你要用一种表示数的方法来表示一个数,其实就是把数字分段。

那我们可以写一个函数用来实现,想要分段可以使用 C++ 中的除法、取模来实现。

有一个要注意的点,就是在输出的时候的格式是先输出 4 个场宽,然后再输出当前是第几轮询问,再输出一个 . 注意 . 后面有个空格(我细心看样例后才发现)。

还有,要开 long long

接下来就是核心代码(给数字分段的函数),部分讲解在代码注释中。

void show_the_number_in_Bangla(ll number) {
    if (number >= 10000000) { //符合kuti表示的范围 
        show_the_number_in_Bangla(number / 10000000);
        cout << " kuti";
        show_the_number_in_Bangla(number % 10000000);
    } else {
        if (number >= 100000) { //符合lakh表示的范围 
            cout << " " << (number / 100000) << " lakh";
        }
        number %= 100000; //去掉lakh表示的 
        if (number >= 1000) { //符合hajar表示的范围 
            cout << " " << (number / 1000) << " hajar";
        }
        number %= 1000; //去掉hajar表示的 
        if (number >= 100) { //符合shata表示的范围 
            cout << " " << (number / 100) << " shata";
        }
        number %= 100; //去掉shata表示的 
        if (number > 0) cout << " " << number; //剩下的无法表示的,直接输出 
    }
}

感谢管理员的审核,求通过。