Submission
Status:
[PPPPPPPPPPP]
Score: 100
User: chawinkn
Problemset: A.Six Zero
Language: cpp
Time: 0.029 second
Submitted On: 2025-04-04 18:17:17
#include <bits/stdc++.h>
using namespace std;
const int M=1e9+7;
// int dp[1000009][3];
void solve() {
string s;
cin >> s;
int n=s.length();
// memset(dp, 0, sizeof(dp));
int dp[2][3]={0};
for (int i = 1; i <= n; i++) {
memset(dp[i%2], 0, sizeof(dp[i%2]));
dp[i%2][0] += (s[i-1] == '6'), dp[i%2][0] %= M; // 6
if (s[i-1] == '0') {
dp[i%2][1] += dp[(i-1)%2][0], dp[i%2][1] %= M; // 60
dp[i%2][2] += dp[(i-1)%2][1], dp[i%2][2] %= M; // 600
}
dp[i%2][0] += dp[(i-1)%2][0], dp[i%2][0] %= M;
dp[i%2][1] += dp[(i-1)%2][1], dp[i%2][1] %= M;
dp[i%2][2] += dp[(i-1)%2][2], dp[i%2][2] %= M;
}
cout << dp[n%2][2] << "\n";
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int t;
cin >> t;
while (t--) solve();
return 0;
}