codeforces_330c
앞으로 추출 연산 제거법과 관련된 것은 반드시 그 역구를 구해야지 직접 꺼내서 제거한 후에 다시 역을 구해서는 안 된다.
AC 코드:
#include <cstdio>
#include <string.h>
#include <iostream>
using namespace std;
const int MAX_NUMBER = 1000007;
const long long MOD_NUMBER = 1000000007;
long long value[MAX_NUMBER];
bool isGood[MAX_NUMBER * 9];
int a,b;
int length;
int check(int number) {
while (number) {
int temp = number % 10;
if (temp != a && temp != b) {
return 0;
}
number /= 10;
}
return 1;
}
long long getMod(long long number, long long power) {
long long result = 1;
long long square = number;
while (power) {
if (power & 1) {
result = (result * square) % MOD_NUMBER;
}
square = (square * square) % MOD_NUMBER;
power >>= 1;
}
return result;
}
int main() {
scanf("%d%d%d", &a, &b, &length);
if (a < b) {
int temp = a;
a = b;
b = temp;
}
for (int s = 1; s <= length * a; s++) {
if (check(s)) {
isGood[s] = 1;
}
}
value[0] = 1;
for (long long i = 0; i < length; i++) {
long long inverse = getMod(i + 1, MOD_NUMBER - 2);
value[i + 1] = (value[i] * (length - i)) % MOD_NUMBER;
value[i + 1] = (value[i + 1] * inverse) % MOD_NUMBER;
}
long long ans = 0;
for (int s = 1; s <= length * a; s++) {
if (isGood[s]) {
int temp = s - length * b;
if (temp >= 0 && (temp % (a - b)) == 0) {
int x = temp / (a - b);
ans = (ans + value[x]) % MOD_NUMBER;
}
}
}
cout << ans << endl;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.