计蒜客 Half-consecutive Numbers 暴力打表找规律
来源:互联网 发布:云计算课程经典教材 编辑:程序博客网 时间:2024/05/21 00:31
The numbers 1, 3, 6, 10, 15, 21, 28, 36, 45 and ti=21i(i+1), are called half-consecutive.
For given N, find the smallest r which is no smaller than N such that tr is square.
Input Format
The input contains multiple test cases.
The first line of a multiple input is an integer T followed by T input lines.
Each line contains an integer N (1≤N≤1016).
Output Format
For each test case, output the case number first.
Then for given N, output the smallest r.
If this half-consecutive number does not exist, output −1.
样例输入
412950
样例输出
Case #1: 1Case #2: 8Case #3: 49Case #4: 288
题目来源
2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
打表找规律
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.HashSet;import java.util.Set;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { new Task().solve(); }}class Task { InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out) ; void solve(){ /*for(long i = 1 ; i <= 100000000L ; i++){ long x = i*(i+1)/2 ; long y = (long)Math.sqrt(x + 0.5) ; if(y * y == x){ System.out.println(i + " " + x + " " + y) ; } }*/ long[] a = new long[26] ; long[] b = new long[26] ; long[] r = new long[26] ; a[0] = 1 ; b[0] = 1 ; r[0] = 1 ; for(int i = 1 ; i < 26 ; i++){ a[i] = a[i-1] + b[i-1] ; b[i] = a[i-1] + a[i] ; r[i] = b[i] * b[i] + ((i%2==0) ? 0 : -1) ; } int cas = 1 ; int t = in.nextInt() ; while(t-- > 0){ long n = in.nextLong() ; for(int i = 0 ; i < 26 ; i++){ if(r[i] >= n){ out.println("Case #" + (cas++) + ": " + r[i]) ; break ; } } } out.flush() ; } }class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public int[] nextInts(int n) { int[] nums = new int[n]; for (int i = 0; i < n; i++) { nums[i] = nextInt(); } return nums; } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } }
阅读全文
0 0
- 计蒜客 Half-consecutive Numbers 暴力打表找规律
- 计蒜客 Half-consecutive Numbers
- 2017 icpc 乌鲁木齐赛区 E.Half-consecutive Numbers(找规律)
- 2017 乌鲁木齐赛区网络赛 Half-consecutive Numbers(【规律题】)
- 计蒜客-2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-E-Half-consecutive Numbers
- 计蒜客 16954 Half-consecutive Numbers(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E)
- 2017 ICPC 乌鲁木齐网赛 E Half-consecutive Numbers
- 2017ICPC乌鲁木齐网络赛E Half-consecutive Numbers
- 2017 ICPC 乌鲁木齐网赛 E Half-consecutive Numbers
- 【2017新疆网络赛】E Half-consecutive Numbers 打表
- 2017 ACM-ICPC 亚洲区乌鲁木齐赛网络赛 E. Half-consecutive Numbers
- ICPC2017网络赛(乌鲁木齐)E: Half-consecutive Numbers (大数)
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E.Half-consecutive Numbers
- E. Half-consecutive Numbers 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E. Half-consecutive Numbers
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛E Half-consecutive Numbers
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E: Half-consecutive Numbers
- E. Half-consecutive Numbers 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 1315:游程编码
- Redis的数据结构(一)
- K
- 浅谈一下Java String
- thinkphp-如何生成Admin后台文件入口
- 计蒜客 Half-consecutive Numbers 暴力打表找规律
- Android 图表控件的使用
- 一、存储数据到本地方法一:
- Window下java -jar *.jar需要管理员执行的解决办法
- Android项目重构-界面篇
- 设计模式—单例
- java 格式化时间
- cmd查询系统的相关命令
- 1609:矩形面积交