1691: 一个简单的数字游戏
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 448 Solved: 119
[ Submit][ Status][ Web Board]
Description
由于一般的数字游戏很难,小灰灰同学把这个数字游戏改了,让游戏变得非常简单,修改后的数字游戏的规则如下:给你一组数字片段,将这些数按给出的顺序连接起来得到一个数。例如:给出00229,32, 321,3214,87,我们可以将这些数按顺序连接起来就可以得到229-32-321-3214-87。
Input
数据的第一个行是一个T,代表程序要执行的次数(T小于10)。
然后是T组测试数据,每一组测试数据的第一个是一个正整数N(N小于10),接下来是N个数字片段,数字片段不会超过9位。数字片段间有空格隔开。
Output
对于每一组测试数据,输出该数。注意:不要输出前导0。
Sample Input
2
3 045 023 22
5 00229 32 321 3214 87
3 045 023 22
5 00229 32 321 3214 87
Sample Output
4502322
22932321321487
22932321321487
HINT
由于上次的数字游戏太难,小灰灰这次总结了两点解题的窍门
(1) 尽量用字符串把数字读入。
(2) 千万不要输出前导0,如连接后的数字是0008970004,要输出8970004。
Source
解题思路:
将输入的数字以字符串的形式输入到数组a,再将数组a的数字复制到数组b,然后遍历数组b,若b[i]!='0',则将不为‘0’之后的字符全部输出。
解题心得:
刚开始,把题目都看错了,一直以为要将每一个数字以0为前导的0去掉,结果一直wa,自己真的太不细心了,连示例都没看清楚,还有需要注意的是若输入的数字全为0,要输出0,而不是什么都不输出,但题目中没有提示这一点。我也是同学提醒我的。
ac代码:
#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int t,k,n,flag;
char a[15],b[110];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
k=0;
flag=0;
for(int i=0;i<n;i++)
{
scanf("%s",a);
for(int j=0;j<strlen(a);j++)
b[k++]=a[j];
}
for(int i=0;i<k;i++)
{
if(b[i]!='0')
{
for(int j=i;j<k;j++)
printf("%c",b[j]);
flag=1;
break;
}
}
if(flag==0)
printf("0");
printf("\n");
}
return 0;
}若有什么问题可以在评论区一起讨论。
版权声明:本文为ZP_nanfangguniang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。