题解 | #人民币转换# 递归

人民币转换

https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

#include <iostream>
using namespace std;
string arr[]={"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
#define ll long long
string deal(ll x)  //整数部分
{
    if(x>=1e8)  return deal(x/(ll)(1e8))+"亿"+((x%(ll)(1e8)<(ll)1e7&&x%(ll)(1e8)>0)?"零":"")+deal(x%(ll)(1e8));
    if(x>=1e4)  return deal(x/(ll)(1e4))+"万"+((x%(ll)(1e4)<(ll)1e3&&x%(ll)(1e4)>0)?"零":"")+deal(x%(ll)(1e4));
    if(x>=1e3)  return deal(x/(ll)(1e3))+"仟"+((x%(ll)(1e3)<(ll)1e2&&x%(ll)(1e3)>0)?"零":"")+deal(x%(ll)(1e3));
    if(x>=1e2)  return deal(x/(ll)(1e2))+"佰"+((x%(ll)(1e2)<(ll)1e1&&x%(ll)(1e2)>0)?"零":"")+deal(x%(ll)(1e2));
    if(x>=1e1)  return ((x/(ll)(1e1))>1?deal(x/(ll)(1e1)):"")+"拾"+deal(x%(ll)(1e1));
    return arr[x];
}
string deal_x(ll x)    //小数部分
{
    if(x==0) return "整";
    return arr[x/10]+(x/10>0?"角":"")+((x%10)>0?(arr[x%10]+"分"):"");
}
int main() {
    string x;
    cin>>x;
    ll zheng=stoi(x.substr(0,x.find("."))); //提取整数
    ll xiao=stoi(x.substr(x.find(".")+1));  //提取小数
    cout<<"人民币"+deal(zheng)+(zheng>0?"元":"")+deal_x(xiao);
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Atica:笑死了我也收到这个,第一时间还以为是婉拒我,然后一看他把卖课名片推过来大彻大悟
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务