【数列】

【数列】

小红与天使猫猫酱

https://ac.nowcoder.com/acm/contest/112320/F

题目大意

image

思路

image
image
image

代码

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;
}
posted @ 2025-06-30 13:20  White_ink  阅读(10)  评论(0)    收藏  举报