ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#205303 | #3663. 拆分数计数 | tkswls | 100 | 16ms | 1316kb | C++11 | 999b | 2024-07-01 10:26:32 | 2024-07-01 13:03:02 |
answer
#include<bits/stdc++.h>
using namespace std;
int a[100005], cnt, n;
const int mod = 1000000007;
long long f[100005][2];
string s;
int num[100005];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> s;
n = s.size();
for (int i = 1; i <= n; i++) {
num[i] = s[n - i] - '0';
}
while (n) {
int lst = 0;
for (int i = n; i >= 1; i--) {
if ((num[i] + lst * 10) & 1) {
num[i] = (num[i] + lst * 10) >> 1;
lst = 1;
} else {
num[i] = (num[i] + lst * 10) >> 1;
lst = 0;
}
}
a[++cnt] = lst;
if (!num[n]) n--;
}
f[1][0] = 1;
for (int i = 1; i <= cnt; i++) {
// cout << i << " " << a[i] << ' ' << f[i][0] << " " << f[i][1] << "\n";
if (a[i]) {
f[i + 1][1] = (f[i + 1][1] + f[i][1]) % mod;
f[i + 1][0] = (f[i + 1][0] + f[i][1] + f[i][0]) % mod;
} else {
f[i + 1][1] = (f[i + 1][1] + f[i][1] + f[i][0]) % mod;
f[i + 1][0] = (f[i + 1][0] + f[i][0]) % mod;
}
}
cout << f[cnt + 1][0];
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1244kb
input:
16
output:
5
result:
ok 1 number(s): "5"
Test #2:
score: 10
Accepted
time: 0ms
memory: 1248kb
input:
49
output:
7
result:
ok 1 number(s): "7"
Test #3:
score: 10
Accepted
time: 1ms
memory: 1248kb
input:
36185
output:
574
result:
ok 1 number(s): "574"
Test #4:
score: 10
Accepted
time: 0ms
memory: 1244kb
input:
12469
output:
193
result:
ok 1 number(s): "193"
Test #5:
score: 10
Accepted
time: 0ms
memory: 1244kb
input:
268435456
output:
29
result:
ok 1 number(s): "29"
Test #6:
score: 10
Accepted
time: 0ms
memory: 1248kb
input:
886963342
output:
79283
result:
ok 1 number(s): "79283"
Test #7:
score: 10
Accepted
time: 1ms
memory: 1252kb
input:
857111419310807500
output:
587805658
result:
ok 1 number(s): "587805658"
Test #8:
score: 10
Accepted
time: 0ms
memory: 1252kb
input:
241759640534962508
output:
767627753
result:
ok 1 number(s): "767627753"
Test #9:
score: 10
Accepted
time: 3ms
memory: 1292kb
input:
2008999756307389289461098358035312645634707221534336714125655485376852595618160065610595506295869701...
output:
2334
result:
ok 1 number(s): "2334"
Test #10:
score: 10
Accepted
time: 11ms
memory: 1316kb
input:
9325631759829183009185228263798670160985186098483993056211580931423159672143986338581788893197442167...
output:
152579827
result:
ok 1 number(s): "152579827"
Extra Test:
score: 0
Extra Test Passed