题目:
http://acm.hdu.edu.cn/showproblem.php?pid=3652
目要求包含13且被13整除,设计状态 dp[i,j,k,l]: i位数中第一位是j,是否包含13(k=0或1),模13余数是l的数有几个。
知道怎么处理f数组即可
#include
#include
#include
using namespace std;
long long f[11][10][2][13];
int n;
int a[10];
//f[i,j,k,l] 首位为j的i位数,是否含13 (k=0、1),余数为l
//k=0为辅助数组
long long jc(int x)//10^x
{
if (x==1)
return 10;
if (x==0)
return 1;
if (x%2==1)
return jc(x/2)*jc(x/2)*10;
else
return jc(x/2)*jc(x/2);
}
void dp(int x)
{
int i,j,len=0,temp=0,t=0;
long long ans=0;
while (x)
{
a[++len]=x%10;
x/=10;
}
for (i=len;i>=1;i--)
{
for (j=0;j