题意:设n=\bar{a_1 a_2 a_3 \dots a_k}p(n)=a_1 \cdot a_2 \dots a_k,计算k位十进制数中的n的个数。
  若存在n=\bar{a_1 a_2 a_3 \dots a_k},满足p(n)\ne 0 , p(n+1)\ne 0 , 且p(n)\mid n, p(n+1)\mid n+1,则a_1=a_2=\dots =a_{k-1}=1
  证明:
显然不存在a_i=0, 9 (1\le i\le k-1)满足p(n)\ne 0 , p(n+1)\ne 0 , 且p(n)\mid n, p(n+1)\mid n+1
假设存在a_i=2 (1\le i\le k-1),满足p(n)\ne 0 , 且p(n)\mid n,则2\mid p(n) , 2\mid n , 2\mid p(n+1),而gcd(n,n+1)=1,所以2\not\mid n+1,所以p(n+1)\not\mid n+1,所以不存在a_i=2 (1\le i\le k-1),满足p(n)\ne 0 , p(n+1)\ne 0 , 且p(n)\mid n, p(n+1)\mid n+1
同理可得不存在a_i=3, 4, 5, 6, 7, 8 (1\le i\le k-1)满足p(n)\ne 0 , p(n+1)\ne 0 , 且p(n)\mid n, p(n+1)\mid n+1
a_1=a_2=\dots =a_{k-1}=1
  k位数中前k-1位都是1,所以满足条件的n不会超过8个。就看最后一位是否能使p(n)\mid n, p(n+1)\mid n+1
  对k分类讨论,看n最后一位是多少时能满足p(n)\mid n
当k=1时,n的最后一位可以是4,8;
k \in N时,n最后一位可以是1,2,5;
3\mid k-1时,n最后一位可以是3,6;
9\mid k-1时,n最后一位可以是9;
想不到什么情况下最后一位可以是7。
7\mid 7 , 7\not\mid 17 , 7\not\mid 117 , 7\not\mid 1117 , 7\not\mid 11117, 7\not\mid 111117 , 7\mid 1111117 , 7\mid 1111111111117,大概当6\mid k-1时,n最后一位可以是7。但不知道为什么。
  Submit 1: AC。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//AC
#include <iostream>
using namespace std;
 
int main()
{
    bool f[9];
    long k,c(0);
    cin>>k;
    f[0]=f[1]=f[4]=1; f[2]=f[5]=!((k-1)%3); f[3]=f[7]=(k==1); f[6]=!((k-1)%6); f[8]=!((k-1)%9);
    for (int i(0);i<8;++i)
        if (f[i] && f[i+1]) ++c;
    cout<<c;
    return 0;
}