UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#205303#3663. 拆分数计数tkswls10016ms1316kbC++11999b2024-07-01 10:26:322024-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];
}

详细

小提示:点击横条可展开更详细的信息

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