1005 Spell It Right
阿新 • • 發佈:2020-08-05
題意:給你一個10^100位的數字,求出其各位數字的和,再用對應的英文輸出每一位數字。
分析:簡單語法題,10^100即使long long int都會爆,雖然__int128不會,但是似乎pat的評測機不支援這個....用char型陣列或者string輸入皆可。
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 char word[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; 6 char s[105];//10^100也就是說最多也就101位吧,開105綽綽有餘 7 int dig[105]; 8 int main() 9 { 10 while(cin>>s) 11 { 12 int sum=0;//101位全是9也不會爆int,不需要long long int 13 int len=strlen(s); 14 for(int i=0;i<len;i++) 15 { 16 sum+=s[i]-'0'; 17 }18 if(sum==0) 19 { 20 cout<<word[0]<<endl; 21 continue; 22 } 23 int l=0; 24 while(sum!=0) 25 { 26 int t=sum%10; 27 sum/=10; 28 dig[l++]=t; 29 } 30 for(int i=l-1;i>0;i--) 31{ 32 cout<<word[dig[i]]<<" "; 33 } 34 cout<<word[dig[0]]<<endl; 35 } 36 return 0; 37 }