[Wannafly挑战赛9]~A 找一找

本文介绍了一种简单的方法来找出给定整数集合中,有多少个数能够找到至少一个它们的整数倍也在该集合中。通过遍历数组并检查每个数的倍数是否存在,可以有效地解决这个问题。


 

题目描述

给定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;
} 

未来的我一定会感谢现在正在成长的我!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值