Submission

Status:

[PPPPPPPPPPP]

Score: 100

User: mydKN

Problemset: A.Six Zero

Language: cpp

Time: 0.054 second

Submitted On: 2025-01-05 15:52:46

#include<bits/stdc++.h>

using namespace std;

const int MOD = 1e9 + 7;

int q;

/*
int ncr(int n, int r){
	int sum = 1;
	for(int i=1;i<=r;++i){
		sum = (sum * (n - r + i) / i) % MOD;
	}
	return sum;
}
*/

int mod_exp(int base, int exp){
	int res = 1;
	while(exp > 0){
		if(exp % 2 == 1){
			res = (1LL * res * base) % MOD;
		}
		base = (1LL * base * base) % MOD;
		exp /= 2;
	}
	return res;
}

int mod_inverse(int x){
	return mod_exp(x, MOD - 2);
}

int ncr(int n, int r){
	if(r > n) return 0;
	int numerator = 1, denominator = 1;
	for(int i=0;i<r;++i){
		numerator = (1LL * numerator * (n - i)) % MOD;
		denominator = (1LL * denominator * (i + 1)) % MOD;
	}
	return (1LL * numerator * mod_inverse(denominator)) % MOD;
}

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin >> q;
	while(q--){
		string str;
		cin >> str;
		vector<int> vec;
		for(int i=0;str[i]!='\0';++i){
			if(str[i] == '6') vec.emplace_back(i);
		}
		int cnt = 0;
		for(int i=0;i<vec.size();++i){
			cnt = (cnt + ncr(str.length()-vec[i]-(vec.size()-i), 2)) % MOD;
		}
		cout << cnt << "\n";
	}
}