17110 Divisible(basic)

17110 Divisible

时间限制:1000MS  内存限制:65535K

题型: 编程题   语言: 无限制

Description

Given n + m integers, I1,I2,...,In,T1,T2,...,Tm, we want to know whether (I1*I2*...*In)%(T1*T2*...*Tm)= =0.

输入格式

The first line gives two integers n and m. 1<=n,m<=100

The second line gives n integers I1 I2 ... In.

The third line gives m integers T1 T2 ... Tn.

1<=Ii, Ti<=231

输出格式

Satisfy (I1*I2*...*In)%(T1*T2*...*Tm)= =0, output "yes", otherwise output "no"

输入样例

2 3

24 14

2 7 3

输出样例

yes

 1 #include <iostream>

 2 #include <cstdio>

 3 using namespace std;

 4 typedef long long ll;

 5 ll I[110],T[110];

 6 

 7 ll gcd(ll a,ll b)

 8 {

 9     return b==0?a:gcd(b,a%b);

10 }

11 

12 int main()

13 {

14     int n, m;

15     cin>>n>>m;

16     for(int i = 0; i < n; ++i) {

17         cin>>I[i];

18     }

19     for(int i = 0; i < m; ++i) {

20         cin>>T[i];

21     }

22 

23     int i;

24     for(i = 0;i < m ; i++){

25         for(int j = 0; j < n && T[i] != 1; j++){

26             if(I[i]==1) continue;

27             ll g=gcd(I[j],T[i]);

28             I[j] /= g;

29             T[i] /= g;

30         }

31         if(T[i] != 1) break;//发现一个T[i]不能被I[0]*I[1]*…*I[n]整除,则跳出循环输出no

32     }

33     if(i < m) cout<<"no";

34     else cout<<"yes";

35     return 0;

36 }
View Code

 

你可能感兴趣的:(visible)