大一东北赛选拔赛(2019.4.30)(未完待续)

版权声明:欢迎转载,转载请标明作者和出处。 https://blog.csdn.net/ljw_study_in_CSDN/article/details/89735912

A题 nefu 1829 寻找宝藏

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{
    ll x,y;
}a[1010],b[1010];
ll n,ansx,ansy;
int main()
{
    ios::sync_with_stdio(false);
    while(cin>>n)
    {
        ansx=ansy=0;
        for(int i=1;i<=n;i++)
            cin>>a[i].x>>a[i].y;
        for(int i=1;i<=n;i++)
            cin>>b[i].x>>b[i].y;
        for(int i=1;i<=n;i++)
        {
            ansx=ansx+a[i].x+b[i].x;
            ansy=ansy+a[i].y+b[i].y;
        }
        ansx=ansx/n;ansy=ansy/n;
        printf("%lld %lld\n",ansx,ansy);
    }
    return 0;
}

H题 nefu 1836 数位之和

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,sum,tmp,ans1,ans2,a[15];
int main()
{
    tmp=1;
    for(int i=1;i<=12;i++)//先打表9~999999999999(12个9)
    {
        a[i]=10*tmp-1;
        tmp=tmp*10;
    }
    ios::sync_with_stdio(false);
    while(cin>>n)
    {
        for(ll i=1;i<=12;i++)
        {
            if(a[i]>n)
            {k=i-1;break;}
        }
        ans1=a[k];
        ans2=n-a[k];
        sum=0;
        while(ans1)
        {
            sum=sum+ans1%10;
            ans1=ans1/10;
        }
        while(ans2)
        {
            sum=sum+ans2%10;
            ans2=ans2/10;
        }
        printf("%lld\n",sum);
    }
    return 0;
}

F题 nefu 1834 异或方程解的个数

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
ll quickpower(ll a,ll b)//快速幂,求a的b次幂
{
    ll s=1;
    while(b)
    {
        if(b&1){s=s*a;b--;}
        a=a*a;b=b/2;
    }
    return s;
}
ll a,sum,ans;//sum记录a的二进制中有多少个1
int main()
{
    ios::sync_with_stdio(false);
    while(cin>>a)
    {
        sum=0;
        while(a)//求a的二进制中有多少个1
        {
            sum=sum+a%2;
            a=a/2;
        }
        ans=quickpower(2,sum);
        printf("%lld\n",ans);
    }
    return 0;
}

B题 nefu 1830 装饰圣诞树

#include <bits/stdc++.h>
#define min3(a,b,c) min(min(a,b),c)
using namespace std;
int main()
{
    int a,b,c,mn;
    ios::sync_with_stdio(false);
    while(cin>>a>>b>>c)
    {
        mn=min3(a,b-1,c-2);
        printf("%d\n",3*mn+3);
    }
    return 0;
}

C题 nefu 1831 数组求和

对左右端点进行分类讨论,分四种情况(奇奇、奇偶、偶奇、偶偶),得到求和公式。
这题我竟然因为没看清题目是多组输入WA了三次,诶…

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long q,l,r,ans;
    ios::sync_with_stdio(false);
    while(cin>>q)
    {
        while(q--)
        {
            cin>>l>>r;
            if(l%2!=0&&r%2!=0)ans=(r-l)/2-r;//奇奇
            if(l%2!=0&&r%2==0)ans=(r+1-l)/2;//奇偶
            if(l%2==0&&r%2!=0)ans=(r+1-l)/2*(-1);//偶奇
            if(l%2==0&&r%2==0)ans=(r-l)/2*(-1)+r;//偶偶
            printf("%lld\n",ans);
        }
    }
    return 0;
}

E题 nefu 1833 组装三角形

#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    int a[10],ans;
    while(cin>>a[1]>>a[2]>>a[3])
    {
        sort(a+1,a+4);
        if(a[1]+a[2]>a[3]){printf("0\n");continue;}
        ans=a[3]-(a[1]+a[2]-1);
        printf("%d\n",ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/ljw_study_in_CSDN/article/details/89735912
今日推荐