信息学奥赛一本通 1313:【例3.5】位数问题 递推 (耙耙)

http://ybt.ssoier.cn:8088/problem_show.php?pid=1313
信息学奥赛一本通 1313:【例3.5】位数问题 递推 (耙耙)_第1张图片

#include
using namespace std;
const int mod = 12345;
int a[1005][2];
int n ;
int main(){
	freopen("cpp.in","r",stdin);
	freopen("cpp.out","w",stdout);
	cin>>n;
	a[1][1] = 1; //3
	a[1][0] = 9; //012456789
	int x = a[1][0] ; //进位后该数字增加的
	/*
		a[1][1] = 3 
		a[1][0] = 012456789
		
		a[2][1] = 3		a[1][0]
				= 012456789	a[1][1]
				
		a[i][1] = 1 * a[i-1][0] + 9 * a[i-1][1] 
		
		a[2][0] = 3		a[1][1]
				= 012456789	a[1][0]	
				
				= 33
				= 9*  a[1][0]
		
		012456789 768767683		
				
	*/
	for(int i=2;i<=n;i++){
		if(i==n) x--;
		a[i][1] = ( a[i-1][0] + x * a[i-1][1] ) % mod ;
		a[i][0] = ( a[i-1][1] + x * a[i-1][0] ) % mod ; 
	} 
	cout<<a[n][0]<<endl;
	 
	return 0;
}

你可能感兴趣的:(信息学奥赛一本通 1313:【例3.5】位数问题 递推 (耙耙))