转眼间,已经过去一半的夏令营时光。。。
今天的考试,真有很多签到题;
第一题,只需要你找到最后一位非零数,把它-1,就行,如果是10的整次幂,就输出零。
第二题只要找出4的倍数就行了。
第三题:
#include<bits/stdc++.h>
using namespace std;
const int N=100100;
int n,a[N]={},e[N]={},s[N]={};
bool check(int _)
{
fill(e+1,e+n+1,0);
for(int i=_;i+1<=n;i+=2)
{
int l=min(a[i],a[i+1]), r=max(a[i],a[i+1]);
e[l]=-1, e[r]=l;
}
int top=0;
for(int i=1;i<=n;++i)
{
if(e[i]<0)
s[++top]=i;
if(e[i]>0)
{
if(s[top]!=e[i])
return false;
--top;
}
}
return true;
}
int main()
{
freopen("folding.in","r",stdin);
freopen("folding.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",a+i);
puts(check(1) && check(2) ? "YES" : "NO");
}
fclose(stdin);
fclose(stdout);
}
第四题:
#include<bits/stdc++.h>
using namespace std;
const int N=50050,mod=1000000007;
int n,k,a[N]={};
int main()
{
freopen("seqcalc.in","r",stdin);
freopen("seqcalc.out","w",stdout);
int T=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
scanf("%d",a+i);
long long ans=0;
if(k==1)
{
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)
(ans+=(mod+a[i])*1ll*((i-1)+mod-(n-i))%mod)%=mod;
}
else
{
long long sqrsum=0,sumsqr=0;
for(int i=1;i<=n;++i)
{
(sqrsum+=a[i]*1ll*a[i])%=mod;
(sumsqr+=mod+a[i])%=mod;
}
sumsqr=sumsqr*sumsqr%mod;
ans=(n*sqrsum+mod-sumsqr)%mod;
}
printf("%d\n",(int)ans);
}
fclose(stdin);
fclose(stdout);
}