[Offer收割]编程练习赛23 register

Ended

Participants:430

Verdict:Time Limit Exceeded
Score:30 / 100
Submitted:2017-08-20 13:13:48

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll P=1000000007LL;
ll n;
int k;
struct Node{
    ll cnt;
    ll num;
    Node(int _,ll __):cnt(_),num(__){}
};
int main(){
    scanf("%lld%d",&n,&k);
    queue<Node>Q;
    ll c=0;
    for (int i=1;i<=min(k,9);i++) Q.push(Node(1,i));
    while (!Q.empty()){
        Node cur=Q.front();Q.pop();
        if (cur.cnt==n){
            c++;
            c%=P;
            continue;
        }
        for (int i=0;i<=min(k,9);i++){
            if ((cur.num%10*i)<=k){
                Q.push(Node(cur.cnt+1,cur.num*10+i));
            }
        }
    }
    cout<<c<<endl;
    return 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX