给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除 答案对1e9+7取模
#include<iostream>
using namespace std;
const long k=1e9+7;
char num[51];
int number[51];
int sta[51][51];
unsigned long long ans;
int mods(int supply)
{
    if(supply%3==0)return 0;
    if(supply%3==1)return 1;
    if(supply%3==2)return 2;
}
int main()
{
    int len=1;
    while(cin>>num[len])
    {
        len++;
    }
    len--;
    for(int i=1;i<=len;i++)
    {
        number[i]=num[i]-'0';
    }
    sta[1][mods(number[1])]++;
    ans+=sta[1][0]%k;
    for(int i=2;i<=len;i++)
    {
          sta[i][mods(number[i])]++;
          for(int j=0;j<=2;j++)
          {   
              if(mods(number[i]+j)!=0)
                  sta[i][mods(number[i]+j)]+=sta[i-1][mods(number[i]+j)]+sta[i-1][j];
              else sta[i][mods(number[i]+j)]+=sta[i-1][j];
          }
          ans+=sta[i][0]%k;
    }
    cout<<ans;
    return 0;
}
有很多样例我输出的答案比他给的少输出了1,我自己没看出来哪里有错,请问怎么找出来