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;
        }
    }
  • 相关阅读:
    leetcode 21 Merge Two Sorted Lists
    leetcode 20 Valid Parentheses
    leetcode 19 Remove Nth Node From End of List
    [学习笔记]守护进程深入理解
    [学习笔记]父进程wait和waitpid
    [学习笔记]进程终止的5种方式
    [学习笔记]父子进程共享文件描述符理解
    [学习笔记]Vfork深入理解
    [学习笔记]_exit和exit深入理解
    [学习笔记]孤儿进程僵死进程
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228716.html
Copyright © 2011-2022 走看看