NC18985. 数字权重
描述
输入描述
两个整数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
Pascal(fpc 3.0.2) 解法, 执行用时: 2ms, 内存消耗: 256K, 提交时间: 2018-10-24 10:51:17
var r,n,s,x:qword; k,s1,i,j:longint; begin readln(n,k); s:=1; n:=n-2; x:=10; while 0<n do begin if n mod 2=1 then s:=s*x mod 1000000007; n:=n div 2; x:=(x*x) mod 1000000007; end; for i:=1 to 9 do if (i+k<=9)and(i+k>=0) then s1:=s1+1; writeln(s*s1 mod 1000000007); end.
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 484K, 提交时间: 2018-09-12 19:12:35
#include<cstdio> #define ll long long const int mod=1e9+7; inline ll pow(ll x,ll y){ ll s=1; while(y){if(y&1) s=s*x%mod;x=x*x%mod,y>>=1;} return s; } int main(){ ll n,k; scanf("%lld%lld",&n,&k); if(k>8||k<-9) return !printf("0"); printf("%d",(k>0?9-k:k+10)*pow(10,n-2)%mod); return 0; }
C++14(g++5.4) 解法, 执行用时: 2ms, 内存消耗: 348K, 提交时间: 2019-02-14 22:15:41
#include<stdio.h> #define fo(i,a,b) for(int i=a;i<=b;i++) long long n,k,ans,a; const int p=1e9+7; int main(){ scanf("%lld%lld",&n,&k); fo(i,1,9) 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; }
C 解法, 执行用时: 2ms, 内存消耗: 328K, 提交时间: 2023-04-04 14:56:16
#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; }
Python3(3.9) 解法, 执行用时: 18ms, 内存消耗: 2824K, 提交时间: 2021-02-01 20:25:35
N, K = list(map(int, input().split())) MOD = 1000000007 if 0 <= K <= 9: print(((9 - K) * pow(10, N - 2, MOD)) % MOD) elif -8 <= K <= -1: print(((10 + K) * pow(10, N - 2, MOD)) % MOD) else: print(0)
Python(2.7.3) 解法, 执行用时: 17ms, 内存消耗: 2808K, 提交时间: 2018-09-13 08:43:37
MOD = 1000000007 N, K = map(int, raw_input().split()) if 0 <= K <= 9: print ((9 - K) * pow(10, N - 2, MOD)) % MOD elif -8 <= K <= -1: print ((10 + K) * pow(10, N - 2, MOD)) % MOD else: print 0