题目描述
给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数
输入描述:
第一行输入一个n接下来一行输入n个正整数ai
输出描述:
输出符合条件个数
示例1
输入
5 1 2 3 4 5
输出
2
说明
5个数中1和2符合条件,1是后面每个数的因子,2是4的因子
直接暴力搜索 ,看代码,简单的一批,刚开始还在想是不是要哈希,看来不用
#include<iostream> using namespace std; #include<algorithm> #define INF 0x7f const int N = 1e6+5; typedef long long ll ; #define f(i,l,r) for(int i=l;i<=r;++i) #define g(i,l,r) for(int i=l;i>=r;--i) int n; int a[N]; int main() { cin>>n; int t; int ans=0; f(i,1,n)cin>>t,a[t]++; f(i,1,N) for(int j=2*i;j<N;j+=i) if(a[j]) { ans+=a[i]; break; } cout<<ans<<endl; return 0; }
未来的我一定会感谢现在正在成长的我!
本文介绍了一种简单的方法来找出给定整数集合中,有多少个数能够找到至少一个它们的整数倍也在该集合中。通过遍历数组并检查每个数的倍数是否存在,可以有效地解决这个问题。
951

被折叠的 条评论
为什么被折叠?



