SGU 169 解题手记
题意:设
,
,计算k位十进制数中的n的个数。
若存在
,满足
, 且
,则
。
证明:
显然不存在
满足
, 且
。
假设存在
,满足
, 且
,则
,而
,所以
,所以
,所以不存在
,满足
, 且
。
同理可得不存在
满足
, 且
。
即
。
k位数中前k-1位都是1,所以满足条件的n不会超过8个。就看最后一位是否能使
。
对k分类讨论,看n最后一位是多少时能满足
:
当k=1时,n的最后一位可以是4,8;
当
时,n最后一位可以是1,2,5;
当
时,n最后一位可以是3,6;
当
时,n最后一位可以是9;
想不到什么情况下最后一位可以是7。
,大概当
时,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; } |
