zoukankan      html  css  js  c++  java
  • zzuoj--10424--无聊的课(简单几何)

    10424: 无聊的课

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 81  Solved: 16
    [Submit][Status][Web Board]

    Description

    spy上课从来都不好好听讲(嗯,所以成绩也不太好)。
    他上课常常画一些奇怪的东西画到课本上。
    当然,画在课本上的大多数都是点,他老喜欢将所有的点和其中一个点连一条直线。
    这里为了简化问题,只考虑点,且把课本当成坐标系,所有点都只和原点(0,0)连一条直线。
    现在他有一个烦恼,就是不知道在课本上出现了多少条线。
    你可以为他解决这个烦恼吗?

    Input

    有多组测试数据。
    输入第一行为一个整数N,表示点的个数,然后第2~N+1行,每行两个整数x,y,代表点的坐标。
    输入保证0 < N <= 100, 0 <= x <= 10000, 0 <= y <= 10000。

    Output

    对于每组测试数据,请输出一行,表示在课本上出现的线的条数。

    Sample Input

    3
    1 2
    1 3
    1 4
    

    Sample Output

    3
    

    HINT

    原点可以看做本来就有的。

    线可以重合,几条重合了的线需要当成一条线。


    好坑,可以输入相同的点

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define E 1e-6
    using namespace std;
    double a[110];
    int main()
    {
    	int n,i,j,cnt;
    	int x,y; 
    	while(scanf("%d",&n)!=EOF)
    	{
    		memset(a,0,sizeof(a));
    		int flog=0;
    		for(i=0;i<n;i++)
    		{
    			scanf("%d%d",&x,&y);
    			if(x==0&&y==0) flog=1;
    			if(x==0)
    				a[i]=10001;
    			else
    				a[i]=y*1.0/x;
    		}
    		sort(a,a+n);
    		if(n==0)
    		printf("0
    ");
    		else
    		{
    			cnt=unique(a,a+n)-a;
    			if(flog) cnt--;
    			printf("%d
    ",cnt);
    	 	} 
    	}
    	return 0;
    }
    


  • 相关阅读:
    基本输入输出函数
    变长参数表函数的编写
    一文精通Linux 命令行
    Linux 下的种种打包、压缩、解压命令
    GIT补丁怎么打?
    GIT 合并的冲突解决途径
    GIT 库整理方法
    GIT中常用命令详解1.reset
    霍夫曼编码及译码
    C语言链表实现队列
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273573.html
Copyright © 2011-2022 走看看