你将得到一个正整数N.你的任务是找到正整数K≤N的数量,这样K就不能被集合中的任何数字整除{2,3,4,5,6,7,8,9 ,10}.
我正在考虑所有的素数,但它没有给出正确的答案.
令人惊讶的是,答案非常简单.
#include <iostream>
using namespace std;
int main() {
int t;
cin>>t;
while(t--) {
long long n;
cin>>n;
long long ans = (n/2+n/3+n/5+n/7)-(n/6+n/10+n/14+n/15+n/21+n/35)+(n/30+n/42+n/70+n/105)-(n/210);
cout<<n - ans<<endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我不明白这个算法.任何人都可以解释这个算法.
在使用HashMaps时,我发现了一个奇怪的行为,
import java.util.HashMap;
public class Demo {
public static void main(String[] ar) {
HashMap<String, Integer> ht = new HashMap<>();
ht.put("1", new Integer(1));
ht.put("2", new Integer(2));
ht.put("3", new Integer(3));
System.out.println(ht.get(2));
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码输出null.但是如果我将键作为整数1而不是字符串,则检索值.任何人都可以解释原因,为什么检索Integer值而不是String值.