HDOJ 1000A + B Problem最短代码探索
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最短代码探索相关推荐
- java短_Java中的最短代码和最低延迟
如何编写以最快速度执行的代码,同时仍将编码保持在最低限度? 最短代码和最低延迟 谁能编写具有最低延迟的最短Java代码,以及使用了哪些工具? 更具体地说,目标是开发一个Java应用程序,使用通用解决方 ...
- HDOJ(HDU)1000A + B Problem Java题解
Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to e ...
- 黑客攻击最短代码大揭秘!不要问,问就是5下shift键
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨Caesar 来源丨手机电脑双黑客(heike ...
- 八皇后问题详解(最短代码)
八皇后问题算法分析: 分析1:八皇后由一个64格的方块组成,那么把八个皇后放入不考虑其他情况利用穷举法,有8^64种 可能. 分析2:显然任意一行有且仅有1个皇后,使用数组queen[0->7] ...
- C语言 输出菱形 最短代码!
哈哈,本人大四了,整理代码偶尔发现大一时候上c语言实验课捣鼓出来的打印菱形代码,当然可能很多人都发过,但这个真的是我上课琢磨出来的,发出来分享一下. #include <stdio.h> ...
- 【全网之最】最短代码清除数组中的假、空值(0、空、null、undefined、false)
[1,0,,null,undefined,false].filter(Boolean);//[1]
- 【全网之最】全网最短代码——给名字、电话、账号、昵称加星号*添加隐私保护、身份证号加密、信息脱敏
'舒志强'.replace(/(?<=.)./g, '*');//方法1:输出"舒**"'舒志强'.substr(0,1)+'*'.repeat('舒志强'.length-1 ...
- 判断js中数据类型 的最短代码
判断字符串类型的:function isString(obj) {return obj "" === obj;}判断bool类型的:function isBool(obj){ret ...
- 技术揭秘!百度搜索中台低代码的探索与实践
导读:据Gartner调研,应用开发需求的市场增长至少超过IT交付能力的5倍,预计到2025年,70%的新应用开发将使用低代码技术.我们需要在需求迭代越来越高频.创新能力要求越来越高的背景下,探索如何 ...
最新文章
- # vue.js 之 对vue.js基础理解
- python打开文件不存在-Python判断文件是否存在的三种方法
- [SDOI2016]生成魔咒
- js字符串替换_浅析Vue的生命周期以及JS异步
- 计算机io工作方式,QEMU/KVM和VirtIO工作模式
- 自定义JWT认证过滤器
- linux虚拟机桥接网络配置
- 微软发布自己定制的 Linux 内核和发行版,面向物联网
- Golang的错误处理笔记
- 「云+未来」上海峰会,报名开启
- TensorFlow下载与安装
- 阿里云oss完成简单上传
- 将给定的字符串划分为所有可能的IP地址 Restore IP Addresses
- 21天c语言 ppt,21天学通C语言 第1章 C语言与程序概述.ppt
- Chrome浏览器更新失败
- 通过python使用多种方法改变图片尺寸
- 2018年下半年网络工程师上午真题及答案解析
- fiddler对浏览器、app抓包及证书安装
- mysqld --defaults-file=/myfolder/my.cnf --defaults-extra-file=/myfolder2/my.cnf
- 高等数学(上)知识点总结
热门文章
- 获取本地音乐文件的专辑,图片,音乐信息
- 计算机组装实验老毛桃u盘报告,老毛桃WINPE优盘(U盘)安装系统图解
- 【数据库】python连接数据库(保姆式服务,一口一口喂啊歪)
- 一点Unity3D学习经验分享
- android 防止屏幕误碰,小米11带来硬件防误触解决方案,彻底解决曲面屏误触问题...
- [C++]小根堆 插入/删除/初始化
- Java集合详解--什么是Map
- 八、CSS3的美化背景与边框
- 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结
- 生物计算机未来,未来计算机可能朝着量子计算机、光子计算机和生物计算机等方向发展。( )...