zoukankan      html  css  js  c++  java
  • Code Force 21B Intersection

    B. Intersection
    time limit per test1 second
    memory limit per test256 megabytes
    inputstandard input
    outputstandard output
    You are given two set of points. The first set is determined by the equation A1x + B1y + C1 = 0, and the second one is determined by the equation A2x + B2y + C2 = 0.

    Write the program which finds the number of points in the intersection of two given sets.

    Input
    The first line of the input contains three integer numbers A1, B1, C1 separated by space. The second line contains three integer numbers A2, B2, C2 separated by space. All the numbers are between -100 and 100, inclusive.

    Output
    Print the number of points in the intersection or -1 if there are infinite number of points.

    Examples
    input
    1 1 0
    2 2 0
    output
    -1
    input
    1 1 0
    2 -2 0
    output
    1

    模拟

    #include <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <math.h>
    #include <stdio.h>
    
    using namespace std;
    int a1,b1,c1;
    int a2,b2,c2;
    int main()
    {
        scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&a2,&b2,&c2);
        if((a1==0&&b1==0&&c1!=0)||(a2==0&&b2==0&&c2!=0))
        {cout<<0<<endl;return 0;}
        if((a1==0&&b1==0&&c1==0)||(a2==0&&b2==0&&c2==0))
        {cout<<-1<<endl;return 0;}
        if((a1==0&&a2!=0)||(a1!=0&&a2==0))
        {cout<<1<<endl;return 0;}
        if(a1==0&&a2==0)
        {
            double k1=1.0*c1/b1;
            double k2=1.0*c2/b2;
            if(k1==k2)
            {cout<<-1<<endl;return 0;}
            else
            {cout<<0<<endl;return 0;}
        }
        if((b1==0&&b2!=0)||(b1!=0&&b2==0))
        {cout<<1<<endl;return 0;}
        if(b1==0&&b2==0)
        {
            double k1=1.0*c1/a1;
            double k2=1.0*c2/a2;
            if(k1==k2)
            {cout<<-1<<endl;return 0;}
            else
            {cout<<0<<endl;return 0;}
        }
        if((b1==0&&a2==0)||(b2==0&&a1==0))
        {cout<<1<<endl;return 0;}
        double k1=1.0*a1/b1;
        double k2=1.0*a2/b2;
        if(k1==k2)
        {
            if((c1==0&&c2!=0)||(c1!=0&&c2==0))
            {cout<<0<<endl;return 0;}
            if(c1==0&&c2==0)
            {
                double kk1=1.0*a1/a2;
                double kk2=1.0*b1/b2;
                if(kk1==kk2)
                {cout<<-1<<endl;return 0;}
                else
                {cout<<0<<endl;return 0;}
            }
            else
            {
                double kk1=1.0*a1/a2;
                double kk2=1.0*b1/b2;
                double kk3=1.0*c1/c2;
                if(kk1==kk2&&kk2==kk3)
                {cout<<-1<<endl;return 0;}
                else
                {cout<<0<<endl;return 0;}
            }
        }
        else
        {
            cout<<1<<endl;return 0;
        }
    }
  • 相关阅读:
    CentOS挂载NTFS移动硬盘
    【算法与数据结构】动态规划
    【算法与数据结构】图的最小生成树 MST
    【C语言工具】AddressSanitizer
    【算法与数据结构】二叉堆和优先队列 Priority Queue
    【算法与数据结构】三种简单排序
    【算法与数据结构】并查集 Disjoint Set
    【算法与数据结构】二叉堆和堆排序
    【Linux 应用编程】进程管理
    【Linux 应用编程】进程管理
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228716.html
Copyright © 2011-2022 走看看