zoukankan      html  css  js  c++  java
  • 5802. 统计好数字的数目

    题目

    我们称一个数字字符串是 好数字 当它满足(下标从 0 开始)偶数 下标处的数字为 偶数 且 奇数 下标处的数字为 质数 (2,3,5 或 7)。

    比方说,"2582" 是好数字,因为偶数下标处的数字(2 和 8)是偶数且奇数下标处的数字(5 和 2)为质数。但 "3245" 不是 好数字,因为 3 在偶数下标处但不是偶数。
    给你一个整数 n ,请你返回长度为 n 且为好数字的数字字符串 总数 。由于答案可能会很大,请你将它对 109 + 7 取余后返回 。

    一个 数字字符串 是每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。

    示例 1:
    输入:n = 1
    输出:5
    解释:长度为 1 的好数字包括 "0","2","4","6","8" 。

    示例 2:
    输入:n = 4
    输出:400

    示例 3:
    输入:n = 50
    输出:564908303

    提示:
    1 <= n <= 1015

    快速幂

    直接用Math.pow()计算幂会溢出,因此需要自己实现幂运算把每一次计算的结果取模这样就不会溢出。使用快速幂算法来实现幂运算。

        //快速幂
        private long p(long n,int base){
            if(n==0) return 1;
            else if(n%2==1) return base*p(n-1,base)%1000000007;
            else {
                long temp=p(n/2,base);
                return temp*temp%1000000007;
            }
            
        }
        public int countGoodNumbers(long n) {
            return (int)(p(n/2+n%2,5)*p(n/2,4)%1000000007);
        }
    
  • 相关阅读:
    Git的初步学习
    Git的初步学习
    微信小程序我的界面
    微信小程序我的界面
    Day2:html和css
    Day2:html和css
    Day1:html和css
    Day1:html和css
    Java之JDK7的新语法探索
    Java之JDK7的新语法探索
  • 原文地址:https://www.cnblogs.com/Frank-Hong/p/14968941.html
Copyright © 2011-2022 走看看