印刷"成功"的最短路线

Sam*_*uel 13 c

我一直在尝试这个问题SUCCESS在spoj但我无法获得该问题的最佳解决方案

我试过了

int main(){return !puts("Success");}
Run Code Online (Sandbox Code Playgroud)

但它需要45个字符.有什么替代建议可以解决问题吗?人们也用24个字符解决了它.

Nor*_*ame 6

main(){puts("Success");}
Run Code Online (Sandbox Code Playgroud)

24个字符.

  • 在C中,如果省略返回类型,则隐式 int
  • 如果main()不包含return语句,则main的返回值为0

更新: 好的,在每个版本的C中都可以省略 main的返回,但只有C99才能将返回值定义为0(如果省略).C99也不允许隐式声明.

更新: 我有一些微弱的内存,有人为了类似的问题解决了这个问题:他/她以某种方式编码了文件名中的大部分程序,以便可以在程序代码中使用__FILE__宏来注入代码.我不知道这是否属于OP比赛的规则,但无论如何它应该是一个有趣的练习.

  • 这给出了NZEC错误,因为我们需要返回0并使用int main,自己尝试一下. (6认同)
  • @Luther看起来比赛使用ANSI C,其中main()中的返回不能省略. (5认同)
  • 在当前版本的C中,您可以省略`main`主体中的任何`return`语句,不允许在函数声明中省略返回类型(`int`). (4认同)

sch*_*hot 5

问题陈述非常模糊,看起来需要编译gcc -ansi并在运行时返回0.我能想出来的最好的是:

main(){exit(!puts("Success"));}
Run Code Online (Sandbox Code Playgroud)

计算最终换行符的32个字符(你可以省略吗?).添加intmain()36个字符.

编辑

这可能是不允许的:

/* Filename: Success */
main(){exit(!puts(__FILE__));}
Run Code Online (Sandbox Code Playgroud)

编译,gcc -x c -ansi Success它将为您节省另一个角色!

那个角色解决方案呢:

C
Run Code Online (Sandbox Code Playgroud)

只需编译gcc -ansi -DC='int main(void){puts("Success");return 0;}'.


Mic*_*kis 5

26个字符

main(){brk(printf("%m"));}
Run Code Online (Sandbox Code Playgroud)