0x00 前言

这道题估计是HDOJ里最简单的了,不亦要挑战的是怎样用最短的代码AC它。
看了下HDOJ支持的编程语言,有C、C++、Java、Pascal和C#,对比了下,在这个场景C语言应该是最短的了。
那么,为了方便测试,直接用在线的C语言编辑器了。
在线编程调试 http://www.dooccn.com/c/
A + B Problem原题 http://acm.hdu.edu.cn/showproblem.php?pid=1000

0x01 题目截图


这道题是输入两个整数,计算它们的和并输出,每个结果占一行(有多对输入数据)。

0x02 最初写法

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

代码长度137B

简化写法

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

把换行和空格去掉(第一行后面的换行不能去掉,不然编译会出错),简化后代码长度101B

00x3 用~代替EOF

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

简化后代码长度97B

while(~scanf("%d",&n)) <=> while(scanf("%d",&n)!=EOF)

  • 正常输入的时候,scanf返回输入的数字如1,2,3等等,对这些数字取非,不会成为0,就会执行循环;
  • 错误输入指的就是没有输入的时候,scanf返回的是EOF(End Of File),EOF=-1,对EOF取非,就是对-1取非

~是位运算,它是将数据在内存中的每一位(当然是二进制)取反。-1在内存中所有位全部为1,~(-1)=0,即对-1取非就是0,就会跳出循环。(摘自《~scanf()简析》http://blog.csdn.net/wtyvhreal/article/details/42006055)

0x04 用for循环代替while循环

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

for循环内第一个分号前语句执行一次,第二个分号前是判断继续循环的条件,第二个分号后是每次循环执行的语句,有多个语句则用逗号分开。
简化后代码长度95B。

0x05 充分利用for循环初始化语句

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

把变量a,b的声明放在for循环初始化语句中内,简化后代码长度94B。

0x06 讨论区代码

#include<stdio.h>
main(){for(int a,b;~scanf("%d%d",&a,&b);printf("%d\n",a+b));}

把scanf里的空格省略,int和return省略,简化后代码长度为80B。
试了下,C语言main函数能省略返回值,C++不行。

0x07 大家有更简短的代码么?一起讨论下 :)

【转载请注明出处: http://blog.csdn.net/leytton/article/details/79444078】
PS:如果本文对您有帮助,请点个赞让我知道哦~

HDOJ 1000A + B Problem最短代码探索相关推荐

  1. java短_Java中的最短代码和最低延迟

    如何编写以最快速度执行的代码,同时仍将编码保持在最低限度? 最短代码和最低延迟 谁能编写具有最低延迟的最短Java代码,以及使用了哪些工具? 更具体地说,目标是开发一个Java应用程序,使用通用解决方 ...

  2. HDOJ(HDU)1000A + B Problem Java题解

    Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to e ...

  3. 黑客攻击最短代码大揭秘!不要问,问就是5下shift键

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨Caesar 来源丨手机电脑双黑客(heike ...

  4. 八皇后问题详解(最短代码)

    八皇后问题算法分析: 分析1:八皇后由一个64格的方块组成,那么把八个皇后放入不考虑其他情况利用穷举法,有8^64种 可能. 分析2:显然任意一行有且仅有1个皇后,使用数组queen[0->7] ...

  5. C语言 输出菱形 最短代码!

    哈哈,本人大四了,整理代码偶尔发现大一时候上c语言实验课捣鼓出来的打印菱形代码,当然可能很多人都发过,但这个真的是我上课琢磨出来的,发出来分享一下. #include <stdio.h> ...

  6. 【全网之最】最短代码清除数组中的假、空值(0、空、null、undefined、false)

    [1,0,,null,undefined,false].filter(Boolean);//[1]

  7. 【全网之最】全网最短代码——给名字、电话、账号、昵称加星号*添加隐私保护、身份证号加密、信息脱敏

    '舒志强'.replace(/(?<=.)./g, '*');//方法1:输出"舒**"'舒志强'.substr(0,1)+'*'.repeat('舒志强'.length-1 ...

  8. 判断js中数据类型 的最短代码

    判断字符串类型的:function isString(obj) {return obj "" === obj;}判断bool类型的:function isBool(obj){ret ...

  9. 技术揭秘!百度搜索中台低代码的探索与实践

    导读:据Gartner调研,应用开发需求的市场增长至少超过IT交付能力的5倍,预计到2025年,70%的新应用开发将使用低代码技术.我们需要在需求迭代越来越高频.创新能力要求越来越高的背景下,探索如何 ...

最新文章

  1. # vue.js 之 对vue.js基础理解
  2. python打开文件不存在-Python判断文件是否存在的三种方法
  3. [SDOI2016]生成魔咒
  4. js字符串替换_浅析Vue的生命周期以及JS异步
  5. 计算机io工作方式,QEMU/KVM和VirtIO工作模式
  6. 自定义JWT认证过滤器
  7. linux虚拟机桥接网络配置
  8. 微软发布自己定制的 Linux 内核和发行版,面向物联网
  9. Golang的错误处理笔记
  10. 「云+未来」上海峰会,报名开启
  11. TensorFlow下载与安装
  12. 阿里云oss完成简单上传
  13. 将给定的字符串划分为所有可能的IP地址 Restore IP Addresses
  14. 21天c语言 ppt,21天学通C语言 第1章 C语言与程序概述.ppt
  15. Chrome浏览器更新失败
  16. 通过python使用多种方法改变图片尺寸
  17. 2018年下半年网络工程师上午真题及答案解析
  18. fiddler对浏览器、app抓包及证书安装
  19. mysqld --defaults-file=/myfolder/my.cnf --defaults-extra-file=/myfolder2/my.cnf
  20. 高等数学(上)知识点总结

热门文章

  1. 获取本地音乐文件的专辑,图片,音乐信息
  2. 计算机组装实验老毛桃u盘报告,老毛桃WINPE优盘(U盘)安装系统图解
  3. 【数据库】python连接数据库(保姆式服务,一口一口喂啊歪)
  4. 一点Unity3D学习经验分享
  5. android 防止屏幕误碰,小米11带来硬件防误触解决方案,彻底解决曲面屏误触问题...
  6. [C++]小根堆 插入/删除/初始化
  7. Java集合详解--什么是Map
  8. 八、CSS3的美化背景与边框
  9. 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结
  10. 生物计算机未来,未来计算机可能朝着量子计算机、光子计算机和生物计算机等方向发展。(  )...