2 条题解

  • 3
    @ 2020-02-29 22:20:07

    话说我这个蒟蒻还是找规律的。
    闲话少叙,进入正题。
    ——————————————华丽的分割线————————————————
    首先,我们来画个图。(由于我太菜了,无法发出图片,所以只能让大家自己动手啦!在这里我就列个表)
    相交于同一点的直线的个数 少掉平面的个数:
    2 0
    3 1
    4 1+2
    5 1+2+3
    6 1+2+3+4……
    观察上表,有没有感觉了?
    没错,有p条直线相交于同一点,就会少掉1+2+3+……+(p-2)个平面。
    如果没有直线互相平行,那么会有(2+2+3+4+5+……+n)个平面。
    所以答案就为(2+2+3+4+5+……+n)-(1+2+3+……+(p-2));
    好轻(jiān)松(nán)的呢!
    代码如下:
    Code:

    #include"stdio.h"
    using namespace std;
    int main(){
        int n,p,i,sum=0,ans;
        scanf("%d %d\n",&n,&p);
        ans=1+(n+1)*n/2;
        for(i=1;i<=p-2;i++) sum+=i;
        ans-=sum;
        printf("%d",ans);
        return 0;
    }
    //拒绝抄代码,从你我做起!代码仅供参考!!(想抄??呵呵!!)
    

    本蒟蒻的第一篇题解,望大家批评指正, 大佬轻喷!
    我写的这么走心,能点个赞么?

    • @ 2020-02-29 23:34:08

      看完题解点个赞,多好啊~~~~~ 多轻松啊~~~~~

  • 1
    @ 2020-03-02 11:15:08

    同楼上,找规律。

    p条同点线分出2*p 个区域,剩下来的再多分出((p+1)+(p+2)+……+n)=(p+1+n)*(n-p)/2个区域

    故一共有(p+1+n)*(n-p)/2+2*p 个区域

    Code:

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #define For(i,j,k) for(int i=j;i<=(k);++i)
    using namespace std;
    typedef long long ll;
    inline int read(){
        int x=0,w=0;char c=getchar();
        for(;c<'0'||c>'9';w^=c=='-',c=getchar());
        for(;c>='0'&&c<='9';x=(x<<3)+(x<<1)+(c^48),c=getchar());
        return w?-x:x;
    }
    int qpow(int n,int m,int k){ //n^m%k
        if(m==0) return 1;
        int ans=qpow(n,m/2,k)%k;
        if(m%2) return ans*ans%k*ans%k;
        return ans*ans%k;
    }
    int main(){
        int n,p;cin>>n>>p;
        int ans=2*p;
        ans+=(p+1+n)*(n-p)/2;
        cout<<ans;
        return 0;
    }
    
  • 1

信息

ID
1008
难度
2
分类
数学 点击显示
标签
递交数
11
已通过
3
通过率
27%
上传者