Uva 10311 - Goldbach and Euler
Problem Link :: Uva Goldbach and Euler
Code:: goes to below.....
Code:: goes to below.....
/* Verdict :: Accepted Time :: 0.176 ****** The best Rank (3rd) i have ever got in Uva online judge. to Solve that Problem..******* */ /// Header file begin #include <iostream> #include <cstdio> #include <cstring> #include <map> #include <string> #include <vector> #include <cmath> #include <cctype> #include <sstream> #include <set> #include <list> #include <stack> #include<utility> #include <queue> #include <algorithm> /// End //.......... /// Macro #define sf scanf #define pf printf #define sfint(a,b) scanf("%d %d",&a,&b) #define sfl(a,b) scanf("%ld %ld",&a,&b) #define sfll(a,b) scanf("%lld %lld",&a,&b) #define sfd(a,b) scanf("%lf %lf",&a,&b) #define sff(a,b) scanf("%f %f",&a,&b) #define lp1(i,n) for(i=0;i<n;i++) #define lp2(i,n) for(i=1;i<=n;i++) #define mem(c,v) memset(c,v,sizeof(c)) #define cp(a) cout<<" "<<a<<" "<<endl #define nl puts("") #define sq(x) ((x)*(x)) #define all(x) x.begin(),x.end() #define sz size() #define gc getchar() #define pb push_back /// End......... /// Size #define mx7 20000100 #define mx6 1500000 #define mx5 100005 #define mx4 100001000 #define inf 1<<30 //infinity value #define eps 1e-9 #define mx (65540) #define mod 1000000007 #define pi acos(-1.0) /// Macros for Graph #define white 0 #define gray 1 #define black -1 #define nil -2 using namespace std; //.................................................................................................................. typedef long long LL; typedef long L; typedef unsigned long long ull; typedef unsigned long ul; typedef unsigned int ui; typedef pair<int, int> pii; template<class T> T gcd(T a, T b ) {return b<=0?a:gcd(b,a%b);} template<class T> T large(T a, T b ) {return a>b?a:b;} template<class T> T small(T a, T b ) {return a<b?a:b;} template<class T> T diffrnce(T a, T b) {return a-b<0?b-a:a-b;} int prime[(mx4 >> 6)+1]; #define setbit(n) (prime[n>>6]|=(1<<((n>>1)&31))) #define checkbit(n) (prime[n>>6]&(1<<((n>>1)&31))) #define qrt 10000 vector<int>prm; int plen; void seieve() { int i,j; for(i=3;i<=qrt;i+=2) { if(!checkbit(i)) { for(j=i*i;j<=mx4;j+=i+i) { setbit(j); } } } // prm.push_back(2); // // for(i=3;i<=mx4;i+=2) // { // if(!checkbit(i)) // { // prm.push_back(i); // } // } // // plen=prm.size(); //lp1(i,plen)cp(prm[i]); } bool isPrime(int n) { if(!(n&1) or n<2) { return false; } else { return (!checkbit(n)); } return true; } int main() { seieve(); int n; while(~sf("%d",&n)) { if(n&1) { if(isPrime(n-2)) { pf("%d is the sum of 2 and %d.\n",n,n-2); } else { pf("%d is not the sum of two primes!\n",n); } } else { int div=n/2; bool f=false; for(int i=div;i<n;i++) { int b = n-i; if(isPrime(b) and isPrime(i) and b!=i) { pf("%d is the sum of %d and %d.\n",n,b,i); f=true; break; } } if(!f) { pf("%d is not the sum of two primes!\n",n); } f=false; } } return 0; }
Comments
Post a Comment