每日一水-----小光棍数

描述:最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?

输入:有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m

输出:输出第m个小光棍数。

输入数据:

1

输出数据:

471

/***************************************************************************/

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int s = sc.nextInt();
		for(int i=0;i<s;i++){
			Long ge = sc.nextLong();
			if(ge.toString().equals("1")){
				System.out.println("471");
				continue;
			}
			System.out.println((ge - 1)+"471");
		}
	}
}

2333 这道题我表示很蛋疼.第一眼看过去的想法:"嗯,这题用遍历一个个的判断就行"..结果超时..

然后再改进,将计算出来的值放到容器里存起来,如果输入的数字小于容器的长度,就直接从容器里面取好了

如果数字大于容器的长度,那就从容器取最后一个.继续往下计算..心想这样应该可以了吧. = =结果还是超时..

然后我在本地试了一下..感觉速度还可以啊..  随手输入了几个数字.. 1 2 3 4 5 6 ...好吧..我无语了

显示出来的数字全都是 471......  只不过前面的数字不同....然后ac了..

时间: 2024-10-18 00:13:30

每日一水-----小光棍数的相关文章

小光棍数

描述 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少? 输入 有多组测试数据.第一行一个整数n,表示有n组测试数据.接下来的每行有一个整数m. 输出 输出第m个小光棍数. 样例输入 1 1 样例输出 471 同余定理 即 a三b mod m  则存在一个k使得a=b+k*m      这道题 a = 47

小光棍数(同余定理)

小光棍数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少? 输入 有多组测试数据.第一行一个整数n,表示有n组测试数据.接下来的每行有一个整数m. 输出 输出第m个小光棍数. 样例输入 1 1 样例输出 471 /*同余定理 即

每日一水-----蛇形填数

描述: 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方阵为: 10 11 12 19 16 13 28 15 14 37 6 5 4 输入:直接输入方陈的维数,即n的值.(n<=100) 输出:输出结果是蛇形方陈. 输入数据: 3 输出数据: 7 8 1 6 9 2 5 4 3 /***************************************************************************/ import java.util.Sca

每日一水-----有趣的数

描述: 把分数按下面的办法排成一个数表. 1/1 1/2 1/3 1/4..... 2/1 2/2 2/3.... 3/1 3/2 .... 4/1.............. 我们以z字型方法给上表的每项编号.特定方法:第一项是1/1,然后是1/2.2/1.3/1.2/2.1/3.1/4.2/3--.编程输入项号N(1<=N<=100000),输出表中第N项. 输入:第一行有一个整数m(0<m<=10),表示有m组测试数据:随后有m行,每行有一个整数N: 输出:输出表中第N项 输

nyoj 458-小光棍数 (471)

458-小光棍数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:6 提交数:6 难度:1 题目描述: 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少? 输入描述: 有多组测试数据.第一行一个整数n,表示有n组测试数据.接下来的每行有一个整数m. 输出描述: 输出第m个小光棍数. 样例输

COGS 930. [河南省队2012] 找第k小的数

题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2,A3,...,AN, 现在有M个询问,每个询问都是Ai...Aj中第k小的数等于多少. 输入格式 第一行两个正整数N,M. 第二行N个数,表示序列A1,A2,...,AN. 紧着的M行,每行三个正整数i,j,k(k≤j-i+1),表示 询问Ai...Aj中第k小的数等于多少. 输出格式 共输出M行,第i行输出第i个询问的答案. 样例输入1: 4 3 4 1 2 3 1 3 1 2 4 3 1 4 4 样例输出1: 1

cogs930.[河南省队2012] 找第k小的数

930. [河南省队2012] 找第k小的数 ★★★   输入文件:kth.in   输出文件:kth.out   简单对比 时间限制:1 s   内存限制:128 MB 题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2,A3,...,AN, 现在有M个询问,每个询问都是Ai...Aj中第k小的数等于多少. 输入格式 第一行两个正整数N,M.第二行N个数,表示序列A1,A2,...,AN.紧着的M行,每行三个正整数i,j,k(k≤j-i+1),表示 询问Ai...Aj

查找第K小的数 BFPRT算法

BFPRT算法是解决从n个数中选择第k大或第k小的数这个经典问题的著名算法,但很多人并不了解其细节.本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法. 一 基本思路 关于选择第k小的数有许多方法 将n个数排序(比如快速排序或归并排序),选取排序后的第k个数,时间复杂度为O(nlogn). 维护一个k个元素的最大堆,存储当前遇到的最小的k个数,时间复杂度为O(nlogk).这种方法同样适用于海量数据的处理. 部分的快速排序(快速选择算法)

顺序统计:寻找序列中第k小的数

最直观的解法,排序之后取下标为k的值即可. 但是此处采取的方法为类似快速排序分块的方法,利用一个支点将序列分为两个子序列(支点左边的值小于支点的值,支点右边大于等于支点的值). 如果支点下标等于k,则支点就是查找的值,如果支点的下标大于k,则在左子序列里继续寻找,如果支点下标小于k,则继续在支点右子序列里面继续寻找第(k-支点下标)小的值. c#实现算法如下: public class FindSpecialOrderElement<T> where T : IComparable<T&