【数列】
【数列】
小红与天使猫猫酱
https://ac.nowcoder.com/acm/contest/112320/F
题目大意
思路
代码
const int N=3e5+10;
i64 n;
void solve(){
cin>>n;
//预处理逆元
i64 inv81=qmi(81LL,mod-2LL,mod);
i64 inv8181=qmi(81LL*81LL,mod-2LL,mod);
i64 inv99=qmi(99LL,mod-2LL,mod);
i64 inv9=qmi(9LL,mod-2LL,mod);
//欧拉降幂
i64 phi=n%(mod-1LL)+(mod-1LL);
//算Sn
i64 Sn_up=(qmi(10LL,phi+1LL,mod)-10LL+mod)%mod;
i64 sub=n*9LL%mod;
Sn_up=(Sn_up-sub+mod)%mod;
i64 Sn=Sn_up*inv81%mod;
//算Tn 分别算三项
i64 X=100LL*inv81%mod*inv99%mod*(qmi(100LL,phi,mod)+mod-1LL)%mod;
i64 Y=n%mod*inv81%mod;
i64 Z=2LL*inv81%mod*inv9%mod*10LL%mod*(qmi(10LL,phi,mod)+mod-1LL)%mod;
i64 Tn=(X+Y-Z+mod)%mod;
i64 ans=(4LL*(Tn+Sn)%mod+n%mod)%mod;
cout<<ans<<endl;
}
Make Geometric Sequence
https://atcoder.jp/contests/abc413/tasks/abc413_d
题目大意
数组能否构成等比数列
思路
注意特判公比为-1的情况
hack数据
1 1 1 -1 -1
代码
int n;
void solve(){
cin>>n;
vector<i64> a(n+1,0);
for(int i=1;i<=n;i++) cin>>a[i];
sort(a.begin()+1,a.end(),cmp);
int flag=1;
for(int i=2;i<n;i++){
if(a[i]*a[i]!=a[i-1]*a[i+1]){
flag=0;
break;
}
}
//特判公比为-1
int flag1=1;
for(int i=1;i<=n;i++){
if(llabs(a[i])!=llabs(a[1])){
flag1=0;
break;
}
}
if(flag1){
int flag2=0;
//有负数
for(int i=1;i<=n;i++){
if(llabs(a[i])==llabs(a[1]) && a[i]!=a[1]){
flag2=1;
break;
}
}
if(flag2){
int cnt0=0,cnt1=0;
for(int i=1;i<=n;i++){
if(a[i]<0) cnt0++;
else if(a[i]>0) cnt1++;
}
if(n%2){
if(cnt0==cnt1+1 || cnt0+1==cnt1){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
return;
}
else{
if(cnt0==cnt1){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
return;
}
}
}
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}