题解 | #小美的因子查询#
小美的因子查询
https://www.nowcoder.com/practice/1870e68256794c6aa727c8bb71fd9737
解题思路
对于每个询问的数字x,我们需要判断它是否有偶数因子。
一个数如果有偶数因子,那么这个数一定能被2整除。
因此,我们只需要判断这个数是否能被2整除即可。
代码
#include <iostream>
using namespace std;
bool hasEvenFactor(int x) {
return x % 2 == 0;
}
int main() {
int T;
cin >> T;
while(T--) {
int x;
cin >> x;
if(hasEvenFactor(x)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
import java.util.Scanner;
public class Main {
public static boolean hasEvenFactor(int x) {
return x % 2 == 0;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while(T-- > 0) {
int x = sc.nextInt();
if(hasEvenFactor(x)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
sc.close();
}
}
def has_even_factor(x):
return x % 2 == 0
def main():
T = int(input())
for _ in range(T):
x = int(input())
print("YES" if has_even_factor(x) else "NO")
if __name__ == "__main__":
main()
算法及复杂度
- 算法:数学判断。通过判断数字是否能被2整除来确定是否存在偶数因子。
- 时间复杂度:,其中T是询问次数,每次判断只需O(1)时间。
- 空间复杂度:,只使用了常数级别的额外空间。