SRM 599 DIV2 500p

原创
2016-06-07 15:14:46678浏览

Problem Statement This problem statement contains superscipts that may not display properly outside the applet. You are given four ints A , B , C and D . Return divisible (quotes for clarity) if A B is divisible by C D . Return not divisib

Problem Statement

This problem statement contains superscipts that may not display properly outside the applet.


You are given four ints A, B, C and D. Return "divisible" (quotes for clarity) if AB is divisible by CD. Return "not divisible" otherwise.

Definition

Class: BigFatInteger2
Method: isDivisible
Parameters: int, int, int, int
Returns: string
Method signature: string isDivisible(int A, int B, int C, int D)
(be sure your method is public)

Notes

- The return value is case-sensitive.
- Positive integer y divides a positive integer x if and only if there is a positive integer z such that y*z=x. In particular, for each positive integer x, both 1 and x divide x.

Constraints

- A, B, C and D will each be between 1 and 1,000,000,000 (109), inclusive.

Examples

0)
6
1
2
1
Returns: "divisible"
Here, AB = 61 = 6 and CD = 21 = 2. 6 is divisible by 2.
1)
2
1
6
1
Returns: "not divisible"
2 is not divisible by 6.
2)
1000000000
1000000000
1000000000
200000000
Returns: "divisible"
Now the numbers are huge, but we can see that AB is divisible by CD from the fact that A=C and B>D.
3)
8
100
4
200
Returns: "not divisible"
We can rewrite 8100 as (23)100 = 2300. Similarly, 4200 = (22)200 = 2400. Thus, 8100 is not divisible by 4200.
4)
999999937
1000000000
999999929
1
Returns: "not divisible"
Here A and C are distinct prime numbers, which means AB cannot have C as its divisor.
5)
2
2
4
1
Returns: "divisible"

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

分解质因数。。。。

注意A或C可能是质数。。。。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

class BigFatInteger2 {
public:
string isDivisible(int, int, int, int);
};

typedef long long ll;
ll gcd(ll a,ll b)
{return b==0?a:gcd(b,a%b);}
bool isp(int n)
{
    if(n==2)return 1;
    if(n%2==0)return 0;
    for(int i=3;i<=sqrt(n);i+=2)
        if(n%i==0)return 0;
    return 1;
}
const int maxn=2e5+354;

struct data
{
    int a,b;
};
int p[maxn];
map pa,pc;
string BigFatInteger2::isDivisible(int A, int B, int C, int D)
{
    string div("divisible"),nodiv("not divisible");

    ll a,b,c,d;
    a=A,b=B,c=C,d=D;
	int ta=sqrt(A),tc=sqrt(C);
    for(int i=2;i<=ta;i++)
    {
        ll cnt=0;
        while(A%i==0)
        {
            cnt++;
            A/=i;
        }
        if(cnt)
            pa[i]=cnt*(ll)B;
    }

    if(A!=1ll)pa[A]=(ll)B;

    if(isp(C))
    {
        if(pa[C]
//Powered by [KawigiEdit] 2.0!


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
PHP中文网
程序员·梦开始的地方
下载APP