题意:给你一个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 }

 

posted on 2020-08-05 22:11  寻雾~  阅读(64)  评论(0编辑  收藏  举报