提出 #61388482
ソースコード 拡げる
#include <bits/stdc++.h>
#define int long long
using namespace std;
int l, r, mi[20], f[20][11][2][2];
int dfs(int x, int lim, int mx, bool f1, bool f2){
if(x < 0) return 1;
if(f[x][lim][f1][f2] != -1) return f[x][lim][f1][f2];
if(!f2 && mi[x] > mx) return dfs(x - 1, 10, mx, f1, f2);
int digit = mx / mi[x] % 10;
f[x][lim][f1][f2] = 0;
for(int i = 0; i < (f1 ? min(lim, digit + 1) : lim); ++i){
if(!i && !f2) f[x][lim][f1][f2] += dfs(x - 1, 10, mx, f1 & (i == digit), false);
else if(!f2 && i) f[x][lim][f1][f2] += dfs(x - 1, i, mx, f1 & (i == digit), f2 || i != 0);
else f[x][lim][f1][f2] += dfs(x - 1, lim, mx, f1 & (i == digit), f2 || i != 0);
}
return f[x][lim][f1][f2];
}
signed main()
{
mi[0] = 1;
for(int i = 1; i < 19; ++i) mi[i] = mi[i - 1] * 10;
cin >> l >> r;
for(int i = 0; i < 20; ++i)
for(int j = 0; j < 11; ++j) f[i][j][0][0] = f[i][j][0][1] = f[i][j][1][0] = f[i][j][1][1] = -1;
int ansr = dfs(18, 10, r, true, false);
for(int i = 0; i < 20; ++i)
for(int j = 0; j < 11; ++j) f[i][j][0][0] = f[i][j][0][1] = f[i][j][1][0] = f[i][j][1][1] = -1;
int ansl = dfs(18, 10, l - 1, true, false);
cout << ansr - ansl << '\n';
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
C - Snake Numbers |
| ユーザ |
Hthntd |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
350 |
| コード長 |
1207 Byte |
| 結果 |
AC |
| 実行時間 |
1 ms |
| メモリ |
3584 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
350 / 350 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 03_random3_04.txt, 04_handmade_00.txt, 04_handmade_01.txt, 04_handmade_02.txt, 04_handmade_03.txt, 04_handmade_04.txt, 04_handmade_05.txt, 04_handmade_06.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3468 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3456 KiB |
| 00_sample_02.txt |
AC |
1 ms |
3584 KiB |
| 01_random_00.txt |
AC |
1 ms |
3460 KiB |
| 01_random_01.txt |
AC |
1 ms |
3500 KiB |
| 01_random_02.txt |
AC |
1 ms |
3452 KiB |
| 01_random_03.txt |
AC |
1 ms |
3512 KiB |
| 01_random_04.txt |
AC |
1 ms |
3456 KiB |
| 01_random_05.txt |
AC |
1 ms |
3464 KiB |
| 01_random_06.txt |
AC |
1 ms |
3504 KiB |
| 01_random_07.txt |
AC |
1 ms |
3376 KiB |
| 01_random_08.txt |
AC |
1 ms |
3376 KiB |
| 01_random_09.txt |
AC |
1 ms |
3460 KiB |
| 02_random2_00.txt |
AC |
1 ms |
3472 KiB |
| 02_random2_01.txt |
AC |
1 ms |
3444 KiB |
| 02_random2_02.txt |
AC |
1 ms |
3464 KiB |
| 02_random2_03.txt |
AC |
1 ms |
3504 KiB |
| 03_random3_00.txt |
AC |
1 ms |
3464 KiB |
| 03_random3_01.txt |
AC |
1 ms |
3468 KiB |
| 03_random3_02.txt |
AC |
1 ms |
3444 KiB |
| 03_random3_03.txt |
AC |
1 ms |
3440 KiB |
| 03_random3_04.txt |
AC |
1 ms |
3472 KiB |
| 04_handmade_00.txt |
AC |
1 ms |
3464 KiB |
| 04_handmade_01.txt |
AC |
1 ms |
3464 KiB |
| 04_handmade_02.txt |
AC |
1 ms |
3496 KiB |
| 04_handmade_03.txt |
AC |
1 ms |
3428 KiB |
| 04_handmade_04.txt |
AC |
1 ms |
3444 KiB |
| 04_handmade_05.txt |
AC |
1 ms |
3500 KiB |
| 04_handmade_06.txt |
AC |
1 ms |
3460 KiB |