PAT乙级1002
2017-08-22 11:22
281 查看
1002. 写出这个数 (20)
时间限制400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
分析:一看到这个题屁颠屁颠的用整数类型int做了,后来发现长度不够用longlong还不够,蠢哭了 一会整理下
基本数据类型可表示范围,先上蠢萌第一版代码,还是可以算小点的数据的 o.o
#include "iostream" #include "stack" #include "string" std::stack<std::string> s; int CalNum(long long n) { int sum=0; long long N=n; while(N%10!=0||N/10!=0) { sum+=N%10; N=N/10; } return sum; } void SecCal(int num) { int n=0; int m=0; while(num%10!=0||num/10!=0) { m++; n=num%10; num=num/10; if(0==n) { s.push("ling"); continue; } if(n==1) {s.push("yi"); continue;} if(n==2) {s.push("er"); continue;} if(n==3) {s.push("san"); continue;} if(n==4) {s.push("si"); continue;} if(n==5) {s.push("wu"); continue;} if(n==6) {s.push("liu"); continue;} if(n==7) {s.push("qi"); continue;} if(n==8) {s.push("ba"); continue;} if(n==9) {s.push("jiu"); continue;} } for(int k=0;k<m;k++) { std::string j=s.top(); s.pop(); std::cout<<j<<" "; } //std::cout<<s.top(); //s.pop(); //return 0; } int main() { long long i=0; std::cin>>i; int num=CalNum(i); SecCal(num); system("pause"); }下面贴正确代码
查看提交
评测结果
时间 | 结果 | 得分 | 题目 | 语言 | 用时(ms) | 内存(kB) | 用户 |
---|---|---|---|---|---|---|---|
8月22日 11:07 | 答案正确 | 20 | 1002 | C++ (g++ 4.7.2) | 12 | 628 | 鸭鸭 |
测试点
测试点 | 结果 | 用时(ms) | 内存(kB) | 得分/满分 |
---|---|---|---|---|
0 | 答案正确 | 7 | 628 | 12/12 |
1 | 答案正确 | 8 | 508 | 1/1 |
2 | 答案正确 | 7 | 512 | 1/1 |
3 | 答案正确 | 8 | 624 | 2/2 |
4 | 答案正确 | 9 | 628 | 2/2 |
5 | 答案正确 | 12 | 512 | 2/2 |
int main() { char c; int a[10]; int t=0; char pinyin[][9] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; int sum=0; while((c=getchar())!='\n')//这里也可以这样读入char c[100];gets(c);
sum+=(c-'0');//这里最好加括号 while(sum%10!=0||sum/10!=0) { a[t]=sum%10; sum=sum/10; t++; } std::cout<<pinyin[a[t-1]]; for(int i=t-2;i>=0;i--) std::cout<<" "<<pinyin[a[i]]; system("pause"); }
Win7 64位系统,VS2008平台下C++各基础数据类型长度以及范围如下表:
类型 | 长度 | 范围 |
int | 4 | (-2147483648,2147483647) |
long int | 4 | (-2147483648,2147483647) |
unsigned int | 4 | (0,4294967295) |
long | 4 | (-2147483648,2147483647) |
Long long | 8 | (-9223372036854775808,9223372036854775807) |
unsigned long | 4 | (0,4294967295) |
char | 1 | (-128,127) |
unsigned char | 1 | (0,255) |
short | 2 | (-32768,32767) |
unsigned short | 2 | (0,65535) |
double | 8 | (2.22507e-308,1.79769e+308) |
long double | 8 | (2.22507e-308,1.79769e+308) |
float | 4 | (1.17549e-038,3.40282e+038) |
long float | 8 | (2.22507e-308,1.79769e+308) |
发现:int \long int \ long这三种类型的长度和范围一致
unsignedint \ unsigned long这二种类型的长度和范围一致
double\ long double \long float 这三种类型的长度和范围一致
相关文章推荐
- PAT 乙级 1002-数字分类
- PAT乙级1002 写出这个数
- PAT乙级1002. 写出这个数 (20)
- PAT 乙级题:1002. 写出这个数 (20)
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- 【PAT乙级真题及训练集】1002. 写出这个数 (20)
- PAT乙级1002
- PAT乙级1002
- PAT乙级1002. 写出这个数 (20)
- PAT乙级(Basic Level)真题-1002 数字分类 (20)
- PAT-乙级-1002-写出这个数
- PAT 乙级 1002 1002. 写出这个数
- PAT(乙级) 1002.写出这个数
- pat乙级1002
- 1002. 写出这个数 (20)-PAT乙级真题
- PAT-乙级 1002 写出这个数
- PAT乙级训练题--1002
- PAT_乙级1002
- PAT乙级1002. 写出这个数 (20)
- PAT乙级1002(C语言)- 写出这个数 (20)