首页 > 代码库 > PAT甲级1005 Spell It Right
PAT甲级1005 Spell It Right
题目:PAT甲级 1005
题解:水题。看到题目的第一时间就在想一位一位的mod,最后一加一转换就完事了。结果看到了N最大为10的100的次方,吓得我赶紧放弃这个想法...
发现碰到这种情况用字符串十分好用,这道题应该考察的就是这一点。大致思路就是把数字的每一位放到字符串中,然后通过ASCII码得到每一位的相加结果num,然后把num一位一位的放到stack中,使用stack是因为它先进先出的特性,最后输出就行了。
代码:
1 #include<cstdio> 2 #include<queue> 3 #include<iostream> 4 #include<cstring> 5 #include<stack> 6 #define maxn 102 7 using namespace std; 8 9 char s[maxn]; 10 int num,len,mid; 11 stack<string> q; 12 13 void tran(int n) 14 { 15 if(n==0) q.push("zero"); 16 else if(n==1) q.push("one"); 17 else if(n==2) q.push("two"); 18 else if(n==3) q.push("three"); 19 else if(n==4) q.push("four"); 20 else if(n==5) q.push("five"); 21 else if(n==6) q.push("six"); 22 else if(n==7) q.push("seven"); 23 else if(n==8) q.push("eight"); 24 else if(n==9) q.push("nine"); 25 } 26 27 int main() 28 { 29 scanf("%s",s); 30 num=0;len=strlen(s); 31 for(int i=0;i<len;i++) 32 { 33 num+=(s[i]-48); 34 } 35 if(num==0)//注意为0的情况 36 { 37 cout<<"zero"; 38 } 39 else 40 { 41 while(num>0) 42 { 43 tran(num%10); 44 num/=10; 45 } 46 while(!q.empty()) 47 { 48 cout<<q.top(); 49 q.pop(); 50 if(!q.empty()) printf(" "); 51 } 52 } 53 return 0; 54 }
PAT甲级1005 Spell It Right
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。