2025.04.18 P9577 「Cfz Round 1」Dead Cells

四个多月没写过代码嘞,手生了(哭)

P9577 「Cfz Round 1」Dead Cells

#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
const int mod=998244353;
int a,b,k,ans;
int ksm(int m){
	int n=2,tmp=1;
	while(m){
		if(m&1){m-=1;tmp*=n;tmp%=mod;}
		m/=2;n*=n;n%=mod;
	}
	return tmp;
}
int calgcd(int m,int n){
	int tmp=0;
	while(n>0){
		tmp=m%n;
		m=n;
		n=tmp;
	}
	return m;
}
signed main(){
	cin>>a>>b>>k;
	if(a<=b){
		ans=ksm(k/a-k/b);
		cout<<ans<<endl;
	}
	else{
		int gcd=calgcd(a,b);
		int lcm=a/gcd*b;
		int k0=k%lcm,cnt=0;
		for(int i=gcd;i<=k0;i+=gcd){
			if(i%a==0)  cnt++;
			if(i%b==0&&cnt>0) cnt--;
		}
		ans=ksm(cnt);
		cout<<ans<<endl;
	}
	return 0;
}

【进食】\(-1 -1 +1\) 最终的结果是 \(1\) 而非 \(-1\) ,注意数列递变的有序性

posted @ 2025-04-18 14:23  Gcint  阅读(8)  评论(0)    收藏  举报