题目描述:我们称一个十进制正整数是幸运数当且仅当它只由数字4和7构成。现在给出一个正整数n,你需要计算由多少个不大于n的幸运数,由于答案可能非常大,你只需要输出答案除以1000000007后的余数。
输入:第一行包含一个整数n,1<=n<=10^100000
输出:输出对应的答案
测试样例:
125
6
21857711
254
朴素思路:逐个穷举
结果:超时,因为数目过大
思路受某位不知道姓名的大神指点,在此表示十分感谢O(∩_∩)O谢谢,思路说明:
符号说明:下面符号中,7xx表示x为4、或7,即744,777,747,774,共有2^2中可能性满足题意。
思路:由于数字仅由7、4组成,所以把满足要求的数字看做由7、4组成的“二进制”数字(7->1,4->0),这样当输入数字长度为n时,最少有种情况。
例如:441,,444,777,123,731,491,594,982,长度均为3