大一东北赛选拔赛(2019.4.30)(未完待续)
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;
}