1 条题解

  • 0
    @ 2025-8-24 21:34:41

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Tarsal
    退役了。

    搬运于2025-08-24 21:34:41,当前版本为作者最后更新于2019-07-27 22:43:39,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    本蒟蒻又来发题解了,

    看到这个题目,本蒟蒻直接开始推公式。。

    嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π));

    然后对比各条弦长的平方和与直径的平方。

    就可以了 QwQ

    以上纯属瞎掰,回到正题

    在我写完上面那种算法,然后苦苦调不出的时候。

    我开始,怀疑我是不是思路有问题。

    事实证明,好像确实有问题;

    以上纯属瞎掰,回到正题+1

    我们想一想,矩形有什么性质:

    四个角都是直角。

    嗯,如果在一个圆周内,什么样的角才是直角。

    嗯,直径所对应的圆周角肯定是直角。

    我没说是直角就一定对应直径。

    好,因为所以的角都是直角。

    那么两条边肯定都是直径。

    那不就好过了吗?

    上代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    #define maxn 50
    int n, a[maxn], s[maxn], ans, sum; 
    
    int main()
    {
    	scanf("%d", &n);//输入 
    	for(int i = 1; i <= n; ++ i)
    	{
    		scanf("%d", &a[i]);//输入 
    		s[i] = s[i - 1] + a[i];//处理前缀和 
    		sum += a[i];//sum是周长 
    	}
    	for(int i = 1; i <= n; ++ i)
    		for(int j = i + 1; j <= n; ++ j)
    			if(s[j] - s[i] == sum / 2)//判断是不是都是直径 
    				++ ans;
    	printf("%d", ans * (ans - 1) / 2);
    	return 0;
    }
    
    • 1

    信息

    ID
    1065
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者