当前位置: 代码迷 >> 综合 >> HDU-1017
  详细解决方案

HDU-1017

热度:13   发布时间:2023-12-15 20:58:01.0
令人感到惊奇的是

此题关键在于题意的理解,看了Discuss版块的讨论.问题主要集中于读入的格式,题目中给出的第一个数据是何意两点之上.

OJ上的honey前辈写了一篇帖子,可以看看

 第一行就是要测试数据的组数(就是那么多的数据作为一组)。 然后下边的数据就是每一小组要测试的数据 并且每一小组以0 0结束,每一行结果要换行,每一组要换行,其中最后一大组结束时不换行。否则,就会Presentation Error。我试过的。
3

10 1
2 5
3 3
6 8
0 0

2 9
3 7
0 0

6 6
5 4
9 8
0 0
这就表示有三大组,每组的测试数据个数不定,以 0 0 结束。
希望对后边的同志有所帮助

 不过令我感到惊奇的是,第一个"要测试数据的组数后面"是否要读取空行引起了很大的争议.有人这么加了一句scanf("\n");自己由于是用C++完成的代码,所以没管这么多,直接上的cin>>n>>m;而没有理会空行的问题.

 

两个收获:1.和前面的问题一样,每每拿到一个问题,应该尽量使用自己的一切已有知识视图将问题化简,这样不仅能够在空间和时间上优化代码,而且有时能够把一个复杂的问题用很巧妙的方式解决.一开自己认为此题必然要使用double和Tolerance的误差判断方法来判断是否为整数商无疑,没想到Discuss上有前辈提供一种使用%号的方法,连封装一个单独的函数都省了.

2.开始学会使用

#ifdef ONLINE_JUDGE
#else freopen("xxxin.txt","r",stdio)
#endif

这样省去了每次提交之前都要注释掉freopen语句的麻烦.另外,网上查阅的资料cin的重定向似乎和C的机制不同,但是freopen方法可以适应C++/C两种方式,这是在很不错的一个宏解决方案.

 

参考文章:http://blog.csdn.net/wangfutao01/article/details/6473498

http://www.cnblogs.com/rootjie/archive/2012/01/22/2328785.html

 

 另外补充一句,单个.c或.cpp在Code Blocks中能够生成.exe,但是由于这不是一个Project,所以没有断点调试的办法,如果要使用Code Blocks的断点调试方法,必须要去新建一个Console App的工程才可以.