1. 程式人生 > 實用技巧 >1005 Spell It Right

1005 Spell It Right

題意:給你一個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 }