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 这三种类型的长度和范围一致