zcmu1691

来源:互联网 发布:浩方提示网络传输错误 编辑:程序博客网 时间:2024/06/07 01:19

1691: 一个简单的数字游戏

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 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

Sample Output

4502322
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;}

若有什么问题可以在评论区一起讨论。


0 0
原创粉丝点击