結果

問題 No.1086 桁和の桁和2
ユーザー SSRS
提出日時 2020-06-19 22:47:19
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 459 ms / 3,000 ms
コード長 1,961 bytes
コンパイル時間 1,935 ms
コンパイル使用メモリ 171,536 KB
実行使用メモリ 7,552 KB
最終ジャッジ日時 2024-07-22 17:46:27
合計ジャッジ時間 9,742 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
long long MOD = 1000000007;
long long modsub(long long a, long long b){
a %= MOD;
b %= MOD;
if (a >= b){
return (a - b) % MOD;
} else {
return MOD - (b - a) % MOD;
}
}
long long modpow(long long a, long long b){
a %= MOD;
long long res = 1;
while (b > 0){
if (b % 2 == 1) res = res * a % MOD;
a = a * a % MOD;
b = b / 2;
}
return res;
}
long long modinv(long long a){
return modpow(a, MOD - 2);
}
long long modrepunit(long long x){
return modsub(modpow(10, x), 1) * modinv(9) % MOD;
}
int main(){
int N;
cin >> N;
vector<long long> L(N);
for (int i = 0; i < N; i++){
cin >> L[i];
}
vector<long long> R(N);
for (int i = 0; i < N; i++){
cin >> R[i];
}
vector<int> D(N);
for (int i = 0; i < N; i++){
cin >> D[i];
}
bool ok = true;
for (int i = 0; i < N - 1; i++){
if (D[i] != 0 && D[i + 1] == 0){
ok = false;
}
}
if (!ok){
cout << 0 << endl;
} else {
int pos = 0;
for (int i = 0; i < N; i++){
if (D[i] == 0){
pos = i + 1;
} else {
break;
}
}
if (pos == N){
cout << 1 << endl;
} else {
vector<long long> L2(N - pos);
for (int i = pos; i < N; i++){
L2[i - pos] = L[i];
}
vector<long long> R2(N - pos);
for (int i = pos; i < N; i++){
R2[i - pos] = R[i];
}
vector<int> D2(N - pos);
for (int i = pos; i < N; i++){
D2[i - pos] = D[i];
}
N -= pos;
vector<int> D3(N, 0);
D3[0] = D2[0] % 9;
for (int i = 1; i < N; i++){
D3[i] = (D2[i] - D2[i - 1] + 9) % 9;
}
long long ans = 1;
for (int i = 0; i < N; i++){
long long tmp = (modrepunit(R2[i]) - modrepunit(L2[i]) + MOD) % MOD;
if (D3[i] == 0 && i != 0){
tmp++;
tmp %= MOD;
}
ans *= tmp;
ans %= MOD;
}
cout << ans << endl;
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0