2016 杭电多校2解题报告

来源:互联网 发布:高校教师招聘考试知乎 编辑:程序博客网 时间:2024/06/12 21:39

都是挺坑的题目,三个人开坑才做出来三个水题,不过比上次爆0了稍微好了一点,还是好好看书吧。

1001·Acperience

这道题被cin卡时间了,还是乖乖用scanf吧

题解

这里写图片描述

代码

#include<bits/stdc++.h>typedef long long ll;const long long mod = 4294967296;#define maxn 1000000+100using namespace std;long long gcd(long long a,long long b){    if (b==0) return a;    return gcd(b,a%b);}int main(){    int t;    freopen("in.txt","r",stdin);    cin>>t;     while(t--)    {        long long x,y;        int i;        long long pp=0,tt=0,sum;        int n,a;        scanf("%d",&n);        for(i=0;i<n;i++)        {            scanf("%d",&a);            pp+=a*a;            tt+=abs(a);        }        tt*=tt;        pp*=n;        sum=pp-tt;        long long k;        if (sum>n)            k=gcd(sum,n);        else            k=gcd(n,sum);        x=sum/k;        y=n/k;        printf("%lld/%lld\n",x,y);    }    return 0;}

1009·It’s All In The Mind

这题我没开坑队友写的,也是一道数学题吧
这里写图片描述

代码

#include<bits/stdc++.h>typedef long long ll;const long long mod = 4294967296;#define maxn 100000+10using namespace std;long long gcd(long long a,long long b){    if (b==0) return a;    return gcd(b,a%b);}int main(){    {int t;cin>>t;while(t--){    int n,m;cin>>n>>m;int a[110],ans=0;for(int i=1;i<=n+1;i++){    a[i]=0;}for(int i=1;i<=m;i++)    {        int x,y;        scanf("%d%d",&x,&y);        a[x]=y;    }    if(a[1]==0) a[1]=100;    if(a[2]==0) a[2]=a[1];    for(int i=n;i>=3;i--)    {        if(a[i]==0) a[i]=a[i+1];    }    for(int i=1;i<=n;i++)        ans+=a[i];    int kk=a[1]+a[2];    int y=gcd(ans,kk);    cout<<kk/y<<'/'<<ans/y<<endl;}return 0;}

1011·Keep On Movin

首先我对这道题的题解而感觉非常无语,虽然是水题也不能这么随便啊
这里写图片描述
这道题三个人都读错题意了,写了半个小时就是wa+TLE,重读题目之后发现是这么的简单,看来还是要多练习练习读读题啊。

代码

#include<bits/stdc++.h>typedef long long ll;const long long mod = 4294967296;#define maxn 100000+10using namespace std;int main(){    int sum,flag,a,t,n;    long long ans;    //freopen("in.txt","r",stdin);    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        sum=0,flag=0,ans;        for(int i=0;i<n;i++)        {            scanf("%d",&a);            if(a%2==1)            {                flag++;            }            sum+=a/2;        }        if(!flag)            ans=sum*2;        else            ans=sum/flag*2+1;        printf("%lld\n",ans);    }    return 0;}
0 0
原创粉丝点击