HDU 4143 A Simple Problem 题解】的更多相关文章

题目 For a given positive integer n, please find the saallest positive integer x that we can find an integer y such that \(y^2 = n +x^2\). 输入 The first line is an integer \(T\), which is the the nuaber of cases. Then T line followed each containing an…
题目内容 给出一个正整数\(n\),找到最小的正整数\(x\),使之能找到一个整数\(y\),满足\(y^2=n+x^2\). 输入格式 第一行是数据组数\(T\),每组数据有一个整数\(n\). 输出格式 输出\(T\)行,表示\(x\),若找不到答案输出\(-1\). 数据范围 \(0\le n\le 10^9\) 样例 2 2 3 样例输出 -1 1 思路 A Not Simple Problem 原式变形一下: \(n=(y+x)(y-x)\) 因此找到\(n\)的两个因子,设为\(a_…
题目链接 题意 : 就是给你一个数n,让你输出能够满足y^2 = n +x^2这个等式的最小的x值. 思路 : 这个题大一的时候做过,但是不会,后来学长给讲了,然后昨天比赛的时候二师兄看了之后就敲了,我也想了一会儿才想起来,真是惭愧啊..... 其实就是将上边那个式子变一下:(y-x)*(y+x) = n ,然后接下来就去枚举(y-x)的值,因为手算了几组数据,发现当这个值越靠近√n时,x的值越小,其实看这个等式也可以看出来,所以枚举的时候从√n这里开始往下枚举就行,然后再看(y-x)+(y+x…
题目 题意:给n,求x; 直接枚举肯定超时, 把给的式子变形, (y+x)(y-x) = n; 令y-x = b, y+x = a; 枚举b, b 的范围肯定是sqrt(n),  y = (a+b)/2;  x = (a-b)/2; b越大, x越小, 所以倒着枚举b #include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; i…
求一个最小的正整数x,使得(y + x) (y - x) = n成立 考虑一下n的分解因式. 可能会想到枚举n的约数,那么a * b = n成立,取最小的x即可 但是要枚举到n / 2,这样会超时. 因为要使得a * b = n,那么a和b中最大的数字最多是sqrt(n),因为不可能是两个大于sqrt(n)的数字相乘得到n的(大过n了) 所以我可以枚举 1 -- sqrt(n)中n的约数,得到a和b,然后反转一下a和b,就是所有a * b = n的结果 例如18的约数 1.2.3.6.9.18…
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5339    Accepted Submission(s): 1693 Problem Description Let A1, A2, ... , AN be N elements. You need to deal with…
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5402    Accepted Submission(s): 1710 Problem Description Let A1, A2, ... , AN be N elements. You need to deal with…
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number of first circle should always be 1…
题目链接 Problem Description Zty很痴迷数学问题..一天,yifenfei出了个数学题想难倒他,让他回答1 / n.但Zty却回答不了^_^. 请大家编程帮助他. Input 第一行整数T,表示测试组数.后面T行,每行一个整数 n (1<=|n|<=10^5). Output 输出1/n. (是循环小数的,只输出第一个循环节). Sample Input 4 2 3 7 168 Sample Output 0.5 0.3 0.142857 0.005952380 分析:…
http://acm.hdu.edu.cn/showproblem.php?pid=4267 [思路] 树状数组的区间修改:在区间[a, b]内更新+x就在a的位置+x. 然后在b+1的位置-x 树状数组的单点查询:求某点a的值就是求数组中1~a的和. (i-a)%k==0把区间分隔开了,不能直接套用树状数组的区间修改单点查询 这道题的K很小,所以可以枚举k,对于每个k,建立k个树状数组,所以一共建立55棵树 所以就可以多建几棵树..然后就可以转换为成段更新了~~ [AC] #include<b…