- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
从数学原理:
A number N is expressible as a sum of 2 squares if and only if in the prime factorization of N, every prime of the form
(4k+3)
occurs an even number of times!
我所做的是预先计算所有 4k+3
数字并通过连续除法检查它的频率。
这个程序是按照约束条件写的:
1 < T <100
0 < N < 10 ^ 12
import java.util.Scanner;
public class TwoSquaresOrNot {
static int max = 250000;
static long[] nums = new long[max];
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int i = 0; i < max; ++i)
nums[i] = 4 * i + 3;
while (T-- > 0) {
long n = sc.nextLong();
System.out.println((canWrite(n) ? "Yes" : "No"));
}
}
private static boolean canWrite(long n) {
// TODO Auto-generated method stub
for (int i = 0; i < nums.length; ++i) {//loop through all the numbers
if (nums[i] > n)
return true;
int count = 0;
while (n % nums[i] == 0) {
count++;
n /= nums[i];
}
if (count % 2 != 0)//check for odd frequency
return false;
}
return true;
}
}
但这似乎在 SPOJ 中不起作用网站。
我错过了什么吗?还是我做错了什么?
0
也在这里面考虑。
Some valid cases are:
1 = 1^2 + 0^2
8 = 2^2 + 2^2
最佳答案
根据 OP 的评论进行编辑。
一些事情。第一:如果你正在寻找质因数分解,你可以在 > sqrt(n) 时停止,你不必一直走到 n。
所以你的代码应该是这样的:
private static boolean canWrite(long n) {
// TODO Auto-generated method stub
for (int i = 0; i < nums.length; ++i) {//loop through all the numbers
//FIRST CHANGE: Sqrt
if (nums[i] > Math.sqrt(n))
break;
int count = 0;
while (n % nums[i] == 0) {
//SECOND CHANGE: count as an array
count[i]++;
n /= nums[i];
}
}
//SECOND CHANGE: count as an array
for (int i=0; i<count.length; i++) {
if (count[i] %2 != 0) return false;
}
return true;
}
关于java - 可以写成两个平方和的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270349/
尝试构造一段代码,返回range(1, limit)中的一个数是否为两个平方数之和(平方数如1**2 = 1,2**2 = 4 - 所以我试图分配给一个数字列表,它们是否是任何这些平方数的总和组合 -
我确实有一个矩阵,行中包含观察值(不同 pH 下的测量值),数据点作为列(随时间变化的浓度)。因此,一行包含一个 pH 值的不同数据点。 我确实想对数据拟合 ODE。所以我定义了一个成本函数,并想计算
令我惊讶的是,调用 np.inner 计算平方和比在预先计算的平方数组上调用 np.sum 快大约 5 倍: 对这种行为有什么见解吗?实际上,我对平方和的快速实现很感兴趣,因此也欢迎提出这些想法。 最
我使用lm(x~y1 + y1 + ... + yn)估计了线性回归模型,并为了应对当前的异方差性,我让 R 估计了稳健的标准误差 coeftest(model, vcov = vcovHC(mode
我使用lm(x~y1 + y1 + ... + yn)估计了线性回归模型,并为了应对当前的异方差性,我让 R 估计了稳健的标准误差 coeftest(model, vcov = vcovHC(mode
我是一名优秀的程序员,十分优秀!