标签:queue str scanf stream spell ref cstring 通过 ...
题目: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 }
标签:queue str scanf stream spell ref cstring 通过 ...
原文地址:http://www.cnblogs.com/RocSAMA/p/6446089.html