序列1,2,2,3,3,3, ... 求第n项的值(n=N*)
来源:互联网 发布:mysql下create index 编辑:程序博客网 时间:2024/05/19 01:31
一、问题描述:
对于这样一个序列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,…
分别有1个1,2个2,3个3,4个4,……求第n个数的值。
二、要求
输入: n,范围: n大于等于1,且n小于等于10^18。
输出: 序列中第n个数的值
要求: 运行时间不超过1s(内存不超过多少我忘了)
输入范例: 100
输出范例: 14
三、解决
编程语言: java
思路:
对序列 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,…
令number=1,2,3,…
令order(no) 为最后一个number=no的数的位置序号,那么,
order(1) = 1,
order(2) = order(1)+2,
order(3) = order(2)+3,
order(4) = order(3)+4当我们求第n个数的值时,只需找到符合 order(m-1)小于n、n小于order(m)的m值即可。
下面是程序:
package test;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ long n = in.nextLong();//接收输入的n long order= 1;//每组number的最后一个序号值 long number = 0;//对应的值:1,2,3,4,... //例如1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,... 中 // “number=4的order”(即最后一个4所在的位置)为10 long i=2; boolean result=true; if (n==1) System.out.println(1); else { while(order+i<n){ order=order+i; i++; } number=i; System.out.println(number); } } }}
在9。8号的笔试中,其实这部分
while(order+i<n){ order=order+i; i++;}
我是用了一个布尔类型的变量判断while循环终止条件,
在循环里又用了 if 语句判断n是否符合 order(m-1)小于n、n小于order(m),
提交后调试结果是 90% 通过。
所以,不知道本文的代码是否可以100%通过测试。
阅读全文
0 0
- 序列1,2,2,3,3,3, ... 求第n项的值(n=N*)
- 序列求和,求1+2+3+.....+n的值
- 递归求:f(n)=1+2+3+……+n的值
- 求1+2+3+。。。+n的值
- 定义Fibonacci数列如下: / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2 输入n,用最快的方法求该数列的第n项。
- 求n很大时求,<= n的素数的个数(时间复杂度o(n ^ 2 / 3)模板
- 1、求n!;2、求1!+2!+3!+......+n!之和
- 求函数f(n)=1/1!+1/2!+1/3!+...+1/n!的值
- LightOJ 1245 求(n/1+n/2+...+n/n)
- 求1+2+3+....n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+。。。+N
- 求1+2+3+...+n
- 求1+2+3+...+n
- 求1+2+3+...+n
- HDU 5015 233 Matrix(矩阵快速幂)
- 初步学习OkHttp
- Maven中POM.XML详解
- MySQL存储过程中的IN,OUT,INOUT类型 用法
- 基于矢量切片的电子地图配图(四)配置基础要素
- 序列1,2,2,3,3,3, ... 求第n项的值(n=N*)
- Java8揭秘之Default 方法
- HaspMap使用简单方法
- MySQL对表的操作,掌握这些整理就够了吧
- Pat(A) 1100. Mars Numbers (20)
- Linux命令-使用echo命令在文件的末尾追加内容
- Java基础知识_毕向东_Java基础视频教程笔记(19-21 IO流)
- connect的变化使用
- 【Java】ArrayList<String>转化为String数组问题