1082 Read Number in Chinese
题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805385053978624
注意
102345读作10万零两千三百四十五,
100002345读作一亿零两千三百四十五
所以下面这行代码,我把原来的j!=0删掉了
if(!zero&&j!=0&&n/J[curpos]>=10) zero=true;
当然,这个地方其实是有争议的,但删不删都能通过,说明出题人为了避免歧义就没有设置相关的测试点
AC代码
#include
using namespace std;
string num[10] = { "ling","yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
string c[6]={"Ge","Shi","Bai","Qian","Yi","Wan"};
int J[]={1,10,100,1000,10000,100000,1000000,10000000,100000000};
int main()
{int n;cin>>n;if(n&#61;&#61;0){cout<<"ling";return 0;}if(n<0){cout<<"Fu ";n&#61;-n;}int part[3];part[0]&#61;n/100000000;part[1]&#61;(n/10000)%10000;part[2]&#61;n%10000;int zero&#61;false,flag&#61;0;for(int i&#61;0;i<3;i&#43;&#43;){int tmp&#61;part[i];for(int j&#61;3;j>&#61;0;j--){int curpos&#61;8-4*i&#43;j;if(curpos>&#61;9) continue;int cur&#61;(tmp/J[j])%10;if(cur){if(zero){flag&#43;&#43;&#61;&#61;0? cout<<"ling" : cout<<" ling";zero&#61;false;}if(j&#61;&#61;0)flag&#43;&#43;&#61;&#61;0? cout<<num[cur] : cout<<" "<<num[cur];else flag&#43;&#43;&#61;&#61;0? cout<<num[cur]<<" "<<c[j] : cout<<" "<<num[cur]<<" "<<c[j];}elseif(!zero&&j!&#61;0&&n/J[curpos]>&#61;10) zero&#61;true;}if(i!&#61;2&&part[i]!&#61;0) cout<<" "<<c[i&#43;4];}
}
参考
1082. Read Number in Chinese (25)-PAT甲级真题