【精】ACM

来源:互联网 发布:dm软件 编辑:程序博客网 时间:2024/06/02 17:18

本文章的目的

本文章的主要目的在于说明在acm刷题过程中,应该注意哪些方面的格式上面的错误

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。

输入描述:

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

输出描述:

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;       如果给定的范围内不存在水仙花数,则输出no;       每个测试实例的输出占一行。
示例1

输入

100 120300 380

输出

no370 371

输入输出的理解

1.理解题目的输入输出

题目虽然是将输入输出分开进行的说明,但在实际编程过程中输入,输出应该是如下形式的(交替形式):

100 120  (输入1)
no (输出1)
300 380  (输入2)
370 371 (输出2)
2.空格、换行 细节

为了清晰的说明上面题目中的格式,接下来我们从编码角度(空格,换行换成相应的转义字符)来看看具体的格式:

  • 空格】空格没有转义字符。
  • 回车:\r】回到当前行的行首,而不会换到下一行。
  • 换行:\n】光标往下一行(不一定到下一行行首)。
  • 回车键 = 换行 + 回车】先移动到下一行,然后移动到行首。(\n\r)


解释完上面基本概念,看看这些概念在程序中的体现(输入输出步骤):

  1. 启动程序
  2. 输入数据第一行】程序会解析输入的数据。
  3. 回车键】Scanner 相应回车键 ,必须等待你按下回车键才能确定你输入完毕,完成交互。否则程序会阻塞在该输入处,不去执行下面的逻辑代码。
  4. 输出 + 关键】根据你输入的数据,执行之后的代码。这是我们主要需要关注的部分,在保证结果是正确的同时,也要保证格式上是正确的。需要注意的点:(1)输入的最后有换行;(2)结果中的空格,注意在程序中判断第一个或者最后一个是否需要加空格。(如:下面的输出2中,输出了两个数字,并且这两个数字之间有一个空格,通过边界条件判断最后一个字符后面不需要加空格)
  5. 再次输入数据】不要先按回车,再开始输入新的数据。(直接输入数据)

100 120\n\r  (输入1)
no\n (输出1)
300 380\n\r  (输入2)
370 371\n (输出2)

相关代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNextInt()){int start = sc.nextInt();int end = sc.nextInt();count(start, end);}}public static void count(int start,int end){int tmp = 0;int sum = 0;int count = 0;for(int i=start;i <= end; i++){sum = 0;tmp = i;while(tmp != 0){sum += Math.pow(tmp%10,3);tmp /=10;}if(sum == i){count ++;                if(count != 1){                    System.out.print(" ");                }                System.out.print(sum);}}if(count == 0){System.out.println("no");}else{System.out.println();}}}



原创粉丝点击