位数问题

tech2023-08-10  113

思路:暴力肯定会超时。开一个二维数组f[1000][2],用f[i][0]表示前i位中含偶数个3的个数,f[i][1]表示前i位中含奇数个3的个数。 注意到首位的时候要去掉前导0的情况。

#include<bits/stdc++.h> using namespace std; int main() { int n,f[1001][2];cin>>n; //f[i][0]表示前i位含偶数个3 //f[i][1]表示前i位含有奇数个3 f[1][0]=8;f[1][1]=1; for(int i=2;i<=n;i++) { int tmp=9; if(i==n)tmp--; f[i][0]=(f[i-1][0]*9+f[i-1][1])%12345; f[i][1]=(f[i-1][1]*9+f[i-1][0])%12345; } cout<<f[n][0]<<endl; return 0; }
最新回复(0)