ZOJ 3483 简单if-else

提醒:答案要约分,不然会错!

 1 #include<iostream>

 2 #include<cstdio>

 3 #include<cstring>

 4 #include<algorithm>

 5 #include<stdio.h>

 6 #include<string.h>

 7 #include<math.h>

 8 using namespace std;

 9 const int MAXSIZE = 2000000;

10 int prime[MAXSIZE];

11 void init_prim(){

12     for (int i=2;i<MAXSIZE;i++)

13         prime[i]=1;

14     prime[0]=0; prime[1]=0;

15     for (int i=1;i<MAXSIZE;i++){

16         if (prime[i]==1)

17             for (int j=i*2;j<MAXSIZE;j+=i)

18                 prime[j]=0;

19     }

20 }

21 int gcd(int a,int b){

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

23 }

24 int main(){

25     int t,i,j,x1,x2,y1,y2;

26     int cnt,ans;

27     init_prim();

28     scanf("%d",&t);

29     while(t--){

30         cnt = 0;

31         ans = 0;

32         scanf("%d%d%d%d",&x1,&x2,&y1,&y2);

33         for(i=y1;i<=y2;i++){

34             for(j=x1;j<=x2;j++){

35                 if((i == 0 && j != 0) || (i != 0 && j == 0))

36                     if((abs(i+j)-3) % 4 == 0 && prime[abs(i+j)])  ans++;

37                 if(i != 0 && j != 0 && ((i*i + j*j) - 3) % 4 != 0 && prime[i*i + j*j])

38                     ans++;

39                 cnt++;

40             }

41         }

42         //if(ans == 0)    cnt = 1;

43         printf("%d/%d\n",ans/gcd(ans,cnt),cnt/gcd(ans,cnt));

44     }

45     return 0;

46 }

 

你可能感兴趣的:(ZOJ)