Subnumbers

Given a positive integer N, let us define a subnumber of N as a consecutive number of digits NOT starting with 0. For example if 0, it has 7 subnumbers, namely, 1, 10, 102, 1021, 2, 21 and 1 (again). Here is your task: please calculate the sum of all the subnumbers of N. For 1021, the sum is 1+10+102+1021+2+21+1 = 1158. Since the result may be very large, output the answer modulo 1000000007 (1) please.

Input Specification:

Each input file contains one test case, which gives the integer N (0) in a line.

Output Specification:

Print in a line the sum of all N's subnumbers (modulo 1000000007).

Sample Input:

1234567890123456789
 

Sample Output:

332876913
 1 #include
 2 using namespace std;
 3 #define ms 1000000007u
 4 vector<long long> v;
 5 int main()
 6 {
 7     ios::sync_with_stdio(false);
 8  //     freopen("data.txt","r",stdin);
 9       string ss;
10       long long s=0,sum=0;
11        cin>>ss;
12        reverse(ss.begin(),ss.end());
13        int k=ss.size();
14        v.resize(k,1);
15        for(int i=1;i)
16        v[i]=(v[i-1]*10+1)%ms;
17     for(int i=0;i)
18     {
19         sum+=(ss[i]-'0')*v[i];
20         if(ss[i]!='0')
21         s=(s+sum)%ms;
22     }
23     cout<<s;
24     return 0;
25 }

 

你可能感兴趣的:(Subnumbers)