码迷,mamicode.com
首页 > 其他好文 > 详细

[NC189A]数字权重

时间:2018-09-13 12:08:50      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:return   strong   std   $1   nbsp   div   printf   数字   limit   

题目大意:有一个$n$位的数,设第$i$位为$a_i$(最高位为$a_1$)。问满足$(\sum\limits_{i=2}^n(a_i-a_{i-1}))==k$的数的个数(不含前导零)

解:发现$(\sum\limits_{i=2}^n(a_i-a_{i-1}))==k\Leftrightarrow a_n-a_1==k$。然后枚举$a_1$判断$a_n$是否合法就行了

卡点:模数为$10^9+7$,写成$10^{10}+7$

C++ Code:

#include <cstdio>
const long long mod = 1000000007;
long long n, k, ans;
long long pw(long long base, long long p) {
	long long res = 1;
	for (; p; p >>= 1, base = base * base % mod) if (p & 1) res = res * base % mod;
	return res;
}
int main() {
	scanf("%lld%lld", &n, &k);
	for (int i = 1; i < 10; i++) {
		if (i + k < 10 && i + k >= 0) (ans += pw(10, n - 2)) %= mod;
	}
	printf("%lld\n", ans);
	return 0;
}

 

[NC189A]数字权重

标签:return   strong   std   $1   nbsp   div   printf   数字   limit   

原文地址:https://www.cnblogs.com/Memory-of-winter/p/9639457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!