POJ 2081
来源:互联网 发布:mac app store 没反应 编辑:程序博客网 时间:2024/05/16 08:23
Description
The Recaman’s sequence is defined by a0 = 0 ; for m > 0, a m = a m−1 − m if the rsulting a m is positive and not already in the sequence, otherwise a m = a m−1 + m.
The first few numbers in the Recaman’s Sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9 …
Given k, your task is to calculate a k.
Input
The input consists of several test cases. Each line of the input contains an integer k where 0 <= k <= 500000.
The last line contains an integer −1, which should not be processed.
Output
For each k given in the input, print one line containing a k to the output.
Sample Input
7
10000
-1
Sample Output
20
18658
题意:
题意大概就是就是第m个位置的数是根据第m-1位置的数推出来的如果a[m-1]-m>0,并且a[m-1]-m在前面的序列中没有出现过那么a[m] = a[m-1]-m否则a[m] = a[m-1]+m
思路:
公式都已经写好了,只需要加一个bool值来标记当前a[m]是否出现过就可以了
代码:
import java.util.Arrays;import java.util.Scanner;public class Test1 { private static int[] array = new int[500005]; private static boolean[] flag = new boolean[10000000]; public static void main(String[] args) { Arrays.fill(flag, false); Arrays.fill(array, 0); for (int i = 1; i <=500000 ; i++) { if (array[i-1]-i>0 && flag[array[i-1]-i]==false) { array[i] = array[i-1]-i; }else array[i]= array[i-1]+i; flag[array[i]] = true; } Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); if (n<0) break; System.out.println(array[n]); } scanner.close(); }}
- poj 2081
- poj 2081
- POJ-2081
- POJ-2081
- POJ 2081
- poj 2081
- POJ 2081 水
- POJ 2081 解题报告
- POJ——2081
- POJ 2081 JAVA
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- 遍历给定目录并将特定文件的名字写入文件
- JNDI到底是什么,有什么作用
- 思想随笔(四)我为什么而活着(续)
- HDU1019(基础题)
- 瀑布流ul带图片版
- POJ 2081
- 勾股定理一日一证连载50
- [Cloud Computing]Mechanisms: Failover System
- hadoop之hbase学习
- 什么是DOM
- 设计模式——工厂方法模式(Factory Method Pattern)
- 2016.7.12c语言的特点左右法则,内存
- Servlet Filter与Spring interceptor的区别和应用Servlet Filter与Spring interceptor
- 23种设计模式全解析