这次的题解除了 f和j都有。。因为那俩我看一个是线段树一个是bit树有点搞不懂
话不多说 直接上题解了
a
题解:减掉前面没用的字符串 然后mod一下26
#include<bits/stdc++.h>
using namespace std;
#define maxn 200000+5
#define INF 0x3f3f3f3f
typedef long long int ll;
int main(){
int t,kase=1;
scanf("%d",&t);
while(t--){
int n;
//scanf("%d",&n);
n=kase++;
int tmp=1;
while(n>tmp)n-=tmp++;
n=(n-1)%26+1;
cout<<char(n-1+'a')<<endl;
}
return 0;
}
b
题解:这个把那个公式拆开就能发现 是所有(n-1)a(n)²的和减去2*a(n)*(a(n-1)*......a(1)) 用前缀和就行了
#include<bits/stdc++.h>
using namespace std;
#define maxn 200000+5
#define INF 0x3f3f3f3f
typedef long long int ll;
int a[maxn];
ll sum[maxn];
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sum[0]=0;
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i];
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=1ll*(n-1)*a[i]*a[i];
}
for(int i=n;i>=1;i--){
ans-=2*a[i]*sum[i-1];
}
cout<<ans<<endl;
}
return 0;
}
c
题解:相邻的数互质