Day5

转眼间,已经过去一半的夏令营时光。。。

今天的考试,真有很多签到题;

第一题,只需要你找到最后一位非零数,把它-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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值