精华内容
下载资源
问答
  • p2181对角线
    2022-01-08 19:16:49

    题目描述(题目来源于洛谷)
    对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
    输入格式
    输入只有一行一个整数 n,代表边数。

    输出格式
    输出一行一个整数代表答案。

    输入输出样例
    输入 #1
    3
    输出 #1
    0
    输入 #2
    6
    输出 #2
    15
    说明/提示
    数据规模与约定
    对于%50的数据,保证3<=n<=100.
    对于%100的数据,保证3<=n<10^5.

    需要注意数据类型.
    long long``
    最大值:9223372036854775807
    最小值:-9223372036854775808
    unsigned long long
    最大值:18446744073709551615
    最小值:0

    #include<stdio.h>
    int main()
    {
        unsigned long long n; 
        scanf("%lld",&n);
        printf("%lld",n*(n-1)/2*(n-2)/3*(n-3)/4);
        
        //getchar();
        //getchar();
        return 0;
    }
    
    更多相关内容
  • P2181对角线

    2022-06-27 23:17:55
    P2181对角线

    #include<iostream>
    using namespace std;
    int main()
    {
        unsigned long long n;
        cin >> n;
        cout << n * (n - 1)/2*(n-2)/3*(n-3)/4 << endl;
        system("pause");
        return 0;
    }

    数据规模

    对于100%的数据,3<=n<=10^5

    unsigned long long 的范围为10^19次方左右

    每个n的最大数据规模为10^5左右,式子中大概为n^4即大约为10^19次方左右,采用unsigned long long.

    对角线公式:n(n-3)/2

    由于求对角线的交点,三边形不存在对角线,即无对角线交点

    四边形有两条对角线,对角线交点数为1

    对角线交点数公式解释:

     

    但可能会出现WA爆掉的情况

    可以将公式化简

    n * (n - 1)/2*(n-2)/3*(n-3)/4

     

    展开全文
  • 对于一个 nn 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,66 边形: 输入格式 输入只有一行一个整数 nn,代表边数。 输出格式 输出一行一个整数代表答案。 输入...

    第三篇题解

    题目描述
    对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

    例如,6 边形:

    在这里插入图片描述

    输入格式
    输入只有一行一个整数 nn,代表边数。

    输出格式
    输出一行一个整数代表答案。

    输入输出样例
    输入 3 输出 0
    输入 6 输出 15

    数据规模与约定

    • 对于 50% 的数据,保证3≤n≤100。
    • 对于100% 的数据,保证3≤n≤10^5。

    个人理解:这题实际上有公式,但这雨我无瓜,我不知道这个公式,说到底还是因为菜。

    所以我还是研究了一下公式解法

    way1:

    公式讲解 :首先我们知道两个对角线相交有且仅有一个交点,而四边形有且仅有两条对角线,也就是说两条对角线确定了四个顶点。因此!!!如果有n个顶点,需要选出4个顶点,这就涉及到了高中的排列组合,这道题是组合问题!因为选的顺序又不影响构成的对角线个数。然后,就套公式啦!

    n * (n-1) * (n-2) * (n-3) / 4!

    但是,我这样提交洛谷直接给我WA,哭唧唧
    在这里插入图片描述
    然后,在 我的不懈努力 借鉴大佬经验下,得出结论,爆掉了… long long 改成 unsigned long long 都不行… 把上面的公式改成

    n * (n-1)/2 * (n-2)/3 * (n-4)/4

    即可。大佬不愧是大佬(此处应该有掌声)

    #include<stdio.h>
    int main(){
    	unsigned long long n,sum;
    	scanf("%lld",&n);
    	sum=n*(n-1)/2*(n-2)/3*(n-3)/4;
    	//sum=n*(n-1)*(n-2)*(n-3)/24;
    	printf("%lld\n",sum);
    	return 0;
    }
    

    下面介绍一下不会公式法

    way2:

    推算“笨”方法:

    顶点个数交点个数
    30
    41
    55
    615
    735
    870
    9126

    接下来就是小学奥数熟悉的找规律,相邻两个交点数做差,反复做差
    最开始是,1,4,10,20,35,56…
    然后,1,3,6,10,15,21…
    接着,1,2,3,4,5,6…
    这相邻俩交点的关系不久清晰了嘛

    #include<stdio.h>
    long long a1[100000];//题目中要求了数据规模10^5
    long long a2[100000];//回顾了一下数组的知识!
    long long a3[100000];//定义longlong是怕数据溢出!
    int main()
    {
    	long long n,i;
    	scanf("%lld",&n);
    	for(int i=1;i<=n;i++)
    	{
    		a1[i]=a1[i-1]+i;//这里生成1,3,6,10序列
    	}
    	for(int i=1;i<=n;i++)
    	{
    		a2[i]=a2[i-1]+a1[i];//这里生成1,4,10,20序列
    	}
    	for(int i=1;i<=n;i++)
    	{
    		a3[i]=a3[i-1]+a2[i];//这里生成答案序列:1,5,15,35
    	}
    	printf("%lld",a3[n-3]);
    	//举个栗子:当n为6时,a3[6]实际对应的是n=9的值,所以一定注意减三!!!
    	return 0;
    }
    

    over

    这图看着就让人开心!
    在这里插入图片描述
    如有错误,欢迎指出!

    展开全文
  • Java实现P2181 对角线

    2021-03-21 19:49:56
    } } 思路:两条对角线确定一个交点,四个顶点确定两条相交的对角线,所以就是无顺序的从顶点中取四个顶点,也就是组合数C下面写个n,上面写个4。 由于n^5,因此需要BigInteger类。 BigInteger类: 注意输入时用...

    一周半前开始帮老师写东西,到今早一点才完成,还只是初稿,拖欠不少作业,博客也鸽了,先补一篇。

    在这里插入图片描述
    在这里插入图片描述

    import java.io.IOException;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) throws IOException{
    		Scanner sc=new Scanner(System.in);
    		String n=sc.next();
    		BigInteger a,b,c,d,e,f,g,h;
    		a=new BigInteger(n);
    		b=new BigInteger("1");
    		c=a.subtract(b);//n-1
    		d=c.subtract(b);//n-2
    		e=d.subtract(b);//n-3
    		f=e.multiply(d).multiply(c).multiply(b).multiply(a);//n(n-1)(n-2)(n-3)
    		g=new BigInteger("24");
    		h=f.divide(g);
    		System.out.println(h);
    	}
    }
    

    思路:两条对角线确定一个交点,四个顶点确定两条相交的对角线,所以就是无顺序的从顶点中取四个顶点,也就是组合数C下面写个n,上面写个4。
    由于n<=10^5,因此需要BigInteger类。
    BigInteger类:
    在这里插入图片描述
    在这里插入图片描述
    注意输入时用string类接收。

    展开全文
  • 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,6 边形: 输入格式 输入只有一行一个整数n,代表边数。 输出格式 输出一行一个整数代表答案。 ...
  • 洛谷P2181 对角线

    2021-01-20 13:06:45
    对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,6边形: 输入格式 输入只有一行一个整数nn,代表边数。 输出格式 输出一行一个整数代表答案。 输入输出...
  • 对于一个 nn 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数。 输出格式 输出一行一个整数代表答案。 输入输出...
  • Python_P2181 对角线

    2021-07-24 10:50:31
    对于一个 nn 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数。 输出格式 输出一行一个整数代表答案。 输入输出...
  • // P2181 对角线 public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); BigInteger n = scanner.nextBigInteger(); scanner.close(); BigInteger number1 = ...
  • #include<stdio.h> int main(void) { unsigned long long n; unsigned long long count(unsigned long long); scanf("%lld", &... printf("%lld", count(n));...unsigned long long count(unsigned long long...
  • 对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。 例如,6 边形: 输入格式 输入只有一行一个整数 n,代表边数。 输出格式 输出一行一个整数代表答案。 输入...
  • 题目描述对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点。请求楚图形中对角线交点的个数。例如,6边形:输入输出格式输入格式:第一行一个n,代表边数。输出格式:第一行输出交点数量输入输出样例...
  • https://www.luogu.com.cn/problem/P2181 """ P2181 对角线 https://www.luogu.com.cn/problem/P2181 """ n=int(input()) ans=n*(n-1)//2*(n-2)//3*(n-3)//4 print(ans)
  • 洛谷 P2181对角线

    2021-03-17 14:10:15
    待补充
  • Luogu P2181 对角线

    2019-09-20 18:53:25
    Luogu P2181 对角线 解析 法一:每 4 个顶点会有一个交点,答案为 $ C_n^4 $ 法二:递推做差找规律 Code 法一 #include<cmath> #include<cstdio> #include<cstring> #include<iostream> ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 213
精华内容 85
关键字:

p2181对角线