数字权重

小a有一个n位的数字,但是它忘了各个位上的数是什么,现在请你来确定各个位上的数字,满足以下条件:

设第i位的数为ai,其中a1为最高位,an为最低位,K为给定的数字

  1. 不含前导0
  2. 在这里插入图片描述
    请你求出满足条件的方案数

输入描述:
两个整数N, K

若存在无解的情况,请输出0

输出描述:
一个整数表示答案,对109 + 7取模
示例1
输入
2 3
输出
6
说明
满足条件的数有:14, 25, 36, 47, 58, 69
示例2
输入
2 -3
输出
7
说明
满足条件的数有:41, 52, 63, 74, 85, 96, 30
示例3
输入
4 3
输出
600
说明
可能的方案有:1234, 1334
示例4
输入
4 -3
输出
700

备注:
对于30%的数据:n, |k| = 5
对于60%的数据:n, |k| ≤ 1000
对于100%的数据:n, |k| ≤ 1013
保证n > 1

#include<stdio.h>
long long n,k,ans,a,p=1e9+7;
int main()
{
    
    
	scanf("%lld%lld",&n,&k);
	for(int i=1;i<=9;i++)
		if (0<=i+k&&i+k<=9) ans++;
	a=10,n-=2;
	while (n)
	{
    
    
		if (n&1) ans=ans*a%p;
		a=a*a%p;
		n>>=1;
	}
	printf("%lld\n",ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/114270806