首页 > 其他分享 >LeetCode 题解 1922. 统计好数字的数目

LeetCode 题解 1922. 统计好数字的数目

时间:2022-11-16 15:15:43浏览次数:75  
标签:10 题解 ans while long 1922 pow LeetCode MOD

1922. 统计好数字的数目 - 力扣(Leetcode)

题解

思路一:快速幂

#define MOD 1000000007
long long power(int n, long long times)
{
    if(times == 1) return n;
    if(times == 0) return 1;
    long long next = power(n, times / 2);
    return next * next * power(n, times % 2) % MOD;
}
int countGoodNumbers(long long n) {
    long long four_times = n / 2;
    long long five_times = four_times + n % 2;
    return (power(4, four_times) * power(5, five_times)) % MOD;
}

思路二:暴力打表

#define MOD 1000000007
int countGoodNumbers(long long n) {
	int mark = n % 2;
	long long ans = 1;
	while (n - pow(10, 14) > 0) {
		n -= pow(10, 14);
		ans = (ans * 918742959) % MOD;
	}
	while (n - pow(10, 13) > 0) {
		n -= pow(10, 13);
		ans = (ans * 567839794) % MOD;
	}
	while (n - pow(10, 12) > 0) {
		n -= pow(10, 12);
		ans = (ans * 857412984) % MOD;
	}
	while (n - pow(10, 11) > 0) {
		n -= pow(10, 11);
		ans = (ans * 454060842) % MOD;
	}
	while (n - pow(10, 10) > 0) {
		n -= pow(10, 10);
		ans = (ans * 176203868) % MOD;
	}
	while (n - pow(10, 9) > 0) {
		n -= pow(10, 9);
		ans = (ans * 142875001) % MOD;
	}
	while (n - pow(10, 8) > 0) {
		n -= pow(10, 8);
		ans = (ans * 468083689) % MOD;
	}
	while (n - pow(10, 7) > 0) {
		n -= pow(10, 7);
		ans = (ans * 924188482) % MOD;
	}
	while (n - pow(10, 6) > 0) {
		n -= pow(10, 6);
		ans = (ans * 171395901) % MOD;
	}
	while (n - pow(10, 5) > 0) {
		n -= pow(10, 5);
		ans = (ans * 86331955) % MOD;
	}
	while (n - pow(10, 4) > 0) {
		n -= pow(10, 4);
		ans = (ans * 325891746) % MOD;
	}
	while (n - pow(10, 3) > 0) {
		n -= pow(10, 3);
		ans = (ans * 36020987) % MOD;
	}
	while (n - pow(10, 2) > 0) {
		n -= pow(10, 2);
		ans = (ans * 564490093) % MOD;
	}
	while (n - pow(10, 1) > 0) {
		n -= pow(10, 1);
		ans = (ans * 3200000) % MOD;
	}
	while ((n -= 2) >= 0) {
		ans *= 20;
		ans %= MOD;
	}
	if (mark)
		return (ans * 5) % MOD;
	return ans;
}

标签:10,题解,ans,while,long,1922,pow,LeetCode,MOD
From: https://www.cnblogs.com/fjnhyzCYL/p/16895943.html

相关文章

  • 【问题解决】ESP32开发板上的CP210xUSB转串口坏了怎么办
        今天居然遇到了主板上的USB转串口芯片坏了的情况!这运气真是。。    还好问题解决了,心理舒服点,这里记录一下,以后大家要是遇到也可以参考。    先吐槽CP210x......
  • AI最前沿 | 重磅专题:类脑机器学习 问题解决器
    AI最前沿|重磅专题:类脑机器学习https://mp.weixin.qq.com/s/gUFb1wXV3QwWRPDaNESvjw子句级关系感知数学单词问题解决器Clause-levelRelationship-awareMathWordPr......
  • LeetCode 题解 46. 全排列
    46.全排列-力扣(Leetcode)题解思路:DFS-注意:力扣测试数据时不会将全局变量重置,要手动重置C代码intptr_line=0;intmark[6];voiddeep_find(intdepth,int*num......
  • 2022.11.14模拟赛题解
    树的覆盖\(dp_{i,j,0/1/2}\)表示以\(i\)为根的子树中覆盖\(j\)个点的方案数。其中\(0/1/2\)分别表示了\(3\)种情况。\(0\)表示示当前节点和子节点都没被选中......
  • CF1748D ConstructOR 题解
    可能更好的食用体验既然题目中用到了位运算,那我们就用二进制来解决这道题。1.判无解观察\(3\,4\,6\)这个样例,我们将其分解二进制:\[\begin{aligned}(3)_{10}&=(11)......
  • 洛谷 P8509 题解(待完善)
    题面。要求所有点到关键点的距离和最小。首先要确定这个点去哪个关键点最短。树上两点间路径与距离是唯一的,所以我们从两个关键点分别跑dfs。第一遍求出每个点到s的最......
  • 神奇脑洞题解——USACO追查坏牛奶(CSGO894)
    COGS的这一题是超级满配版本比洛谷的要强力的多:894.追查坏牛奶-COGS额外要求是:求出最小割流量,同时求出割边最小,同时字典序最小的方案输出割掉的边最小割流量好求,最......
  • 【题解】[模拟赛20221115] Tree
    模拟赛20221115Tree|CQNK\(O(m*n*2^n)\)很好做,但是本题有更优秀的做法:在此记录复杂度\(O(n*2^n)\)的做法。考虑从后往前dp,设dp状态\(f_{s,0/1}\)分别表示在填......
  • 题解 ARC001C【パズルのお手伝い】
    postedon2021-01-1118:20:37|under题解|source前言这道题与八皇后很像,可以做完八皇后再来做这道题。如果你\(\color{white}\colorbox{red}{WA}\)了,请检查你有......
  • 题解 UVA12265【贩卖土地 Selling Land】
    postedon2022-09-2414:33:29|under题解|sourceproblem一个黑白矩阵,求以每个点为右下角,能围出的周长最大的全白矩形的周长。\(n\leq2000\)。solution试图进行......