列表

详情


NC26110. Shortest Code

描述

手速场是小r的最爱。小r的手速飞快,当你们看到这道题的时候,小r已经AK了,不信你们可以去看看榜。如果看完榜发现小r还没AK,你们可以去把他(!*&!$&(!*$%&!^$。


为了速度,小r写代码的时候不喜欢缩进。所有的编辑器和IDE看到小r,吓得都不敢缩进了。同时,小r也不喜欢加不需要的空格空行,包括运算符两端、if/for语句后面的空格、函数之间的空行等。至于注释,对小r来说更没必要了。总之,小r的代码永远都是最短的。

不过,小r的队友并没有小r这么快。他的代码夹杂着大量的空格和注释,这使得小r在比赛时经常心态崩了。于是小r觉得他需要一个插件,来帮他把队友的代码变短,去掉这些没必要的空格、空行和注释。

小r队友的代码所用的语言都是C++,但是在语法上和C、Java甚至JavaScript基本类似(Python作为游标卡尺语言,显然不允许小r如此胡作非为)。缩进使用的都是空格。注释都为单行注释,用//表示,即//及之后的代码都是注释。如果去掉空格以后两端头尾的字母或数字连在了一起,那这个空格是必须加的。如果整行都是空格和注释,那这一行都是没有必要加的。代码里的字符串不含空格和//。

输入描述

输入是一段代码,数据取自真实的Accepted代码提交记录。

保证代码中的注释不含多行注释。

输出描述

去除多余空白字符和注释后的代码

示例1

输入:

#include <stdio.h>
int main() {
  int a, b;
  while (scanf("%d%d", &a, &b) != EOF) { // Multi
    printf("%d\n", a + b);
  }
  return 0; // Can be omitted
  // But if you returned other values,
  // you may get Runtime Error.
}

输出:

#include<stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",a+b);
}
return 0;
}

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2020-03-30 11:37:03

#include<bits/stdc++.h>
using namespace std;
string a,res;
int main()
{
    while(getline(cin,a))
    {
        int l=a.size();
        res="";
        for(int i=0;i<l;i++)
        {
            if(a[i]==' ')
            {
                if(i!=0&&i!=i-1&&isalnum(a[i-1])&&isalnum(a[i+1]))
                {
                    res+=' ';
                }
                else a[i]=a[i-1];
            }
            else if(i<l-1&&a[i]=='/'&&a[i+1]=='/') break;
            else res+=a[i];
        }
        if(res.size()) cout<<res<<endl;
    }
}

C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2020-02-26 11:16:36

#include<bits/stdc++.h>
using namespace std;
string a,res;
int main()
{
	while(getline(cin,a))
	{
		int l=a.size();
		res="";
		for(int i=0;i<l;i++)
		{
			if(a[i]==' ')
			{
				if(i!=0&&i!=i-1&&isalnum(a[i-1])&&isalnum(a[i+1]))
				{
					res+=' ';
				}
				else a[i]=a[i-1];
			}
			else if(i<l-1&&a[i]=='/'&&a[i+1]=='/') break;
			else res+=a[i];
		}
		if(res.size()) cout<<res<<endl;
	}
}

上一题