1 条题解

  • 1
    @ 2023-7-14 10:50:08
    # include <bits/stdc++.h>
     
    const  long long  mod = 1e9+7 ;
     
    long long  powx [30],dig [30],x,y ;
    int  T ; 
     
    struct  Node {
        long long  cnt,sum,sqs ;
    }dp [25][20][20];
     
     
    Node  dfs (int  dep,int  res,int  num,int  lim ) {
        if (dep == 0 ) {
            Node  tmp = (Node ) { 0,0,0 } ;
            if (num != 0 && res != 0 )  tmp.cnt = 1 ;
            return  tmp ;
        }
        if (! lim && dp [dep][res][num].cnt != - 1 )  
        	return  dp [dep][res][num] ;
        long long  i = lim ? dig [dep] : 9 ;
        Node  ans ;
        ans.cnt = ans.sum = ans.sqs = 0 ;
        for (; i >= 0 ; i -- ) {
            if (i != 7 ) {
                Node  tmp = dfs(dep - 1,(res*10+i )%7,(num+i )%7,lim && i == dig [dep] ) ;
                ans.cnt = (ans.cnt+tmp.cnt )%mod ;
                ans.sum = ((ans.sum+( (i*powx[dep - 1]%mod)*tmp.cnt )%mod )%mod+tmp.sum )%mod ;
                ans.sqs = 
                (
            
                	(ans.sqs+tmp.sqs+(2*i*powx[dep - 1]%mod*tmp.sum )%mod )%mod+
                	(i*powx [dep - 1]%mod*powx [dep - 1]%mod*i%mod*tmp.cnt%mod )
            
                %mod)%mod ;
            }
        }
        if (! lim )  dp [dep][res][num] = ans ;
        return  ans ;
    }
     
    long long  solve (long long  x ) {
        memset (dp,- 1,sizeof (dp ) ) ;
        int  cnt = 0 ; 
        while (x ) {
            dig [++ cnt] = x%10 ; 
            x /= 10 ; 
        }
        return  dfs (cnt,0,0,1 ).sqs ;
    }
     
    void  init () {
        powx [0] = 1 ;
        for (int  i = 1 ; i <= 19 ; i ++ )
            powx [i] = (1ll*powx [i - 1]*10 )%mod ;
    }
     
    int  main () {
        init () ;
        scanf ("%d",& T ) ;
        for (int  i = 1 ; i <= T ; i ++ ) {
            std :: cin >> x >> y ;
            std :: cout << ((solve (y ) - solve (x - 1 ) )%mod+mod )%mod << std :: endl;
        }
        return  0 ; 
    }
    
    • 1

    信息

    ID
    484
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    86
    已通过
    18
    上传者