我一直在尝试这个问题SUCCESS在spoj但我无法获得该问题的最佳解决方案
我试过了
int main(){return !puts("Success");}
Run Code Online (Sandbox Code Playgroud)
但它需要45个字符.有什么替代建议可以解决问题吗?人们也用24个字符解决了它.
main(){puts("Success");}
Run Code Online (Sandbox Code Playgroud)
24个字符.
int更新: 好的,在每个版本的C中都可以省略 main的返回,但只有C99才能将返回值定义为0(如果省略).C99也不允许隐式声明.
更新: 我有一些微弱的内存,有人为了类似的问题解决了这个问题:他/她以某种方式编码了文件名中的大部分程序,以便可以在程序代码中使用__FILE__宏来注入代码.我不知道这是否属于OP比赛的规则,但无论如何它应该是一个有趣的练习.
问题陈述非常模糊,看起来需要编译gcc -ansi并在运行时返回0.我能想出来的最好的是:
main(){exit(!puts("Success"));}
Run Code Online (Sandbox Code Playgroud)
计算最终换行符的32个字符(你可以省略吗?).添加int为main()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;}'.