27 November 2015

UVA 378- Intersecting Lines

/***
Md. Namzul Hasan
Shahjalal University of Science & Technology,Sylhet.
hasan08sust@gmail.com
***/
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef int in ;
typedef unsigned long long ull ;
const double pi = 2*acos(0) ;
#define maxi 40000
#define pf printf
#define sc scanf
#define pb push_back
#define MEM(x,y) (memset((x),(y),sizeof(x)))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define load(array,size)  for(int i=0 ; i<size ; i++) cin>>array[i]  ;
#define new_line  pf("\n")
#define clear_data(array) memset(array,0,sizeof(array))
#define highest_int 2147483647

int area(int x1,int y1,int x2,int y2,int x3,int y3)
{
    return x1*y2-y1*x2+x2*y3-y2*x3+x3*y1-y3*x1;
}

int main()
{
    int test ;
    sc("%d",&test) ;
    pf("INTERSECTING LINES OUTPUT\n") ;
    while(test--)
    {
        int x1,y1,x2,y2,x3,y3,x4,y4 ;
        cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4 ;

        if( area(x1,y1,x2,y2,x3,y3)==0 && area(x1,y1,x2,y2,x4,y4)==0)
        {
            pf("LINE\n") ;
            continue ;
        }

        int a1 = y2-y1 ;
        int b1 = x1 -x2 ;
        int c1 =  y1*x2 - x1*y2 ;
        int a2 = y4 -y3 ;
        int b2 = x3 -x4 ;
        int c2 =  y3*x4 - x3*y4 ;
        int m = (a1*b2 - b1*a2) ;  /// condition to be parallel
        if(m==0)
        {
            pf("NONE\n") ;
            continue ;
        }

        double x = ((b1*c2 - b2*c1)*1.0) / ((a1*b2 - a2*b1)*1.0) ;
        double y = ((c1*a2 - c2*a1)*1.0) / ((a1*b2 - a2*b1)*1.0) ;
        pf("POINT %.2lf %.2lf\n",x,y) ;

    }

    pf("END OF OUTPUT\n") ;
    return 0;
}

26 November 2015

uva 587- There's treasure everywhere!

/***
Md. Namzul Hasan
Shahjalal University of Science & Technology,Sylhet.
hasan08sust@gmail.com
***/
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef int in ;
typedef unsigned long long ull ;
const double pi = 2*acos(0) ;
#define maxi 40000
#define pf printf
#define sc scanf
#define pb push_back
#define MEM(x,y) (memset((x),(y),sizeof(x)))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define load(array,size)  for(int i=0 ; i<size ; i++) cin>>array[i]  ;
#define new_line  pf("\n")
#define clear_data(array) memset(array,0,sizeof(array))
#define highest_int 2147483647

int main()
{
    char ch ;
    string str ;
    int d =0 ;
    double x =0,y=0 ;
    int cnt= 1 ;

    while(cin>>ch)
    {
        if(ch>='0' && ch<='9')
            d = d*10 + ch-'0' ;
        else if(ch=='E' || ch=='N' || ch=='D' || ch=='S' || ch=='W')
        {
            str+=ch ;
            if(str=="END")
                break ;
        }
        else if(ch==',' || ch=='.')
        {
            if(str == "E")
                x+=d ;
            else if(str=="N")
                y+=d ;
            else if(str=="S")
                y-=d ;
            else if(str=="W")
                x-=d ;
            else if(str=="NE")
            {
                x = x + (d*cos(45*pi/180.0)) ;
                y = y+ (d*sin(45*pi/180.0)) ;
            }
            else if(str=="NW")
            {
                x = x - (d*cos(45*pi/180.0)) ;
                y = y+ (d*sin(45*pi/180.0)) ;
            }
            else if(str=="SW")
            {
                x = x - (d*cos(45*pi/180.0)) ;
                y = y- (d*sin(45*pi/180.0)) ;
            }
            else if(str=="SE")
            {
                x = x + (d*cos(45*pi/180.0)) ;
                y = y- (d*sin(45*pi/180.0)) ;
            }

            d= 0;
            str = "" ;

            if(ch=='.')
            {
                double dis = sqrt((x*x) + (y*y)) ;
                pf("Map #%d\n",cnt++) ;
                pf("The treasure is located at (%.3lf,%.3lf).\n",x,y) ;
                pf("The distance to the treasure is %.3lf.\n\n",dis) ;
                x=0 ;
                y =0 ;
                dis =0 ;
            }
        }
    }
    return 0;
}

23 November 2015

Lightoj 1141-Number Transformation

/***
Md. Namzul Hasan
Shahjalal University of Science & Technology,Sylhet.
hasan08sust@gmail.com
***/
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef int in ;
typedef unsigned long long ull ;
const double pi = 2*acos(0) ;
#define maxi 40000
#define pf printf
#define sc scanf
#define pb push_back
#define MEM(x,y) (memset((x),(y),sizeof(x)))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define load(array,size)  for(int i=0 ; i<size ; i++) cin>>array[i]  ;
#define new_line  pf("\n")
#define clear_data(array) memset(array,0,sizeof(array))
#define highest_int 2147483647
#define sz 1000+10

bool prime[100001] ;
vector<int> data ;
vector<int> prime_fact[100001] ;


void isPrime()
{
    memset(prime,true,sizeof(prime)) ;

    for(int i =2 ;i<=sz ; i++)
    {
        for(int j= 2*i ;j<=sz ;j+=i)
        {
          prime[j] =false ;
        }
    }

    for(int i=2 ;i<=sz ;i++)
    {
        if(prime[i])
          data.pb(i) ;
    }
}

void fact()
{
    for(int i=2 ;i<=sz ; i++)
    {
        for(int j=0 ;j<data.size() ; j++)
        {
            if(i%data[j]==0 && i>data[j])
                prime_fact[i].pb(data[j]) ;
        }
    }
}

int dis[100001] ;

int bfs(int s, int t)
{
    bool visited[100001] ;
    memset(visited,false,sizeof(visited)) ;
    queue<int>q  ;
    memset(dis,0,sizeof(dis)) ;

    q.push(s) ;
    dis[s] =0 ;
    while(!q.empty())
    {
        int u = q.front() ;
        q.pop() ;
        if(u==t)
            return dis[u] ;
        for(int i=0 ;i<prime_fact[u].size() ; i++)
        {
            int v = u+ prime_fact[u][i] ;
             if(visited[v]==false && v<=t)
             {
                 visited[v] = true ;
                 q.push(v) ;
                 dis[v] = dis[u] +1 ;
             }
        }
    }
    return -1 ;

}
int main()
{
    isPrime() ;
    fact() ;
    int test ;
    cin>>test ;
    int cnt =1 ;
    while(test--)
    {
      int s ,t ;
      cin>>s>>t ;
      int ans = bfs(s,t) ;
      pf("Case %d: %d\n",cnt++,ans) ;
    }
    return 0;
}

Lightoj 1214- Large Division

Let explain one input. a = -202202202202202202 and b =-101.Make partition of a such that the partition is divisible by b. Look 202 is divisible by 101 and next partition is also 202 which is also divisible by 101. Make the process continue till the end of a. There is one thing to beware which is range of a.   

  

/***
Md. Namzul Hasan
Shahjalal University of Science & Technology,Sylhet.
hasan08sust@gmail.com
***/
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef int in ;
typedef unsigned long long ull ;
const double pi = 2*acos(0) ;
#define maxi 40000
#define pf printf
#define sc scanf
#define pb push_back
#define MEM(x,y) (memset((x),(y),sizeof(x)))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define load(array,size)  for(int i=0 ; i<size ; i++) cin>>array[i]  ;
#define new_line  pf("\n")
#define clear_data(array) memset(array,0,sizeof(array))
#define highest_int 2147483647

int main()
{
    int test ;
    int cnt =1 ;
    sc("%d",&test) ;
    while(test--)
    {
        string str ;
        ll b ;
        cin>>str>>b ;
        b = abs(b) ;
        ll m =0 ;
        ll rem =0 ;
        int t =0 ;
        for(int i=0 ; str[i] ; i++)
        {
            if(str[i]== '-')
                continue ;
            m = m+ (str[i] - '0') ;
            rem = m % b ;
            m = rem * 10 ;
            if(rem==0 && i==str.size()-1)
            {
                t++ ;
                pf("Case %d: divisible\n",cnt++) ;
                break ;
            }
        }
        if(t==0)
            pf("Case %d: not divisible\n",cnt++) ;

    }
    return 0;
}


UVA 10679 - I Love Strings!!