uva11029 - Leading and Trailing(头和尾)

2023-11-20 19:33
文章标签 trailing uva11029 leading

本文主要是介绍uva11029 - Leading and Trailing(头和尾),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

求前缀和后缀(分别三位)

后缀容易求,只是取模求幂。。。。每次乘方后都取最后三位,

至于前缀,以前做过类似的题目,,,对于n^k来说,肯定可以用科学计数法来表示,由于太大我们无法存储,而我们也不需要知道它有多大,我们只是要3位,

所以,,,只需要求出小数部分,,指数部分用log求出来,去除整数部分,求10的pow(),,得到的即科学计数法的小数部分,

表达式:P = k*log10(n)

               P = P - (int)P;

               ans =(int) pow(2+P);

代码如下:

#include <cstdio>
#include <cmath>
int solve1(int n, int k)
{double q = k*log10(n);double ans = pow(10,2+q-(int)q);return (int)ans;
}
int my_pow(int n, int k)
{if(k==0) return 1;if(k==1) return n%1000;int a = my_pow(n,k/2);int ans = a*a;if(k%2) ans = n%1000*ans;//这里小心越界哦!!!return ans%1000;
}
int solve2(int n, int k)
{return my_pow(n,k);
}
int main ()
{int n, k, cas;scanf("%d",&cas);while(cas--){scanf("%d %d",&n,&k);int ans1 = solve1(n, k),ans2 = solve2(n, k);printf("%3d...%03d\n",ans1,ans2);}return 0;
}



这篇关于uva11029 - Leading and Trailing(头和尾)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/396933

相关文章

UVA - 11029Leading and Trailing(快速幂取模取后三位 + log10()取前三位)

题目: UVA - 11029Leading and Trailing(快速幂取模取后三位 + log10()取前三位) 题目大意:给你N的k次方,然后要求你求出这个数的前三位和后三位。 解题思路:因为n和k都很大,这个数求出来是大数,所以可以用快速幂取模求后三位,因为后面的三位和前面的位数的没有关系。前面的三位比较难办。设x = log (n^k)  = k * log10(n)

Light OJ 1028 Trailing Zeroes (I) 求n因子数

题目来源:Light OJ 1028 题意:求一个数转化成任意进制后末尾有0的种数 就是一个数因子的个数 思路:一个数可以被分解成若干素数相乘 p1^x1*p2^x2*...*pn^xn 根据乘法原理 因子数为 (x1+1)*(x2+1)*...*(xn+1) 注意剪枝 #include <cstdio>#include <cstring>#include <cmath>#inc

*lightoj 1138 Trailing Zeroes (III) | 二分+数学

这题问了杰神才知道怎么做。 题意: 给你Q,表示N!的结果后面有Q个零,让你求出最小的N为多少。若无法找到则输出impossible 思路: 根据唯一分解定理,一个自然数可以写成质数的幂次方的乘积。例如10 = 2^1 * 5^1 因为是尾部有Q个零,所以N!的结果中5的幂必须等于Q(此时,2的幂肯定比Q大)。 那么我们如果要求一个数的阶乘的结果5的幂次方是多少。 譬如30!的结果中

uva 11029 - Leading and Trailing(快速幂)

题目链接:uva 11029 - Leading and Trailing 题目大意:给出一个n和k求n^k的前三位数和后三位数。 解题思路:后三为数可以用分治的方法(快速幂)去做,可是前三位数就比较麻烦了,看了别人的题解. n^k = 10 ^ (k * log10(n)),所以可以将多余的位数移到小数点后面然后舍弃掉,只保留前三位,pow(10, 2 + fmod(k * l

解决: tar: Removing leading `/‘ from member names

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.  我的情况 。 使用绝对路径 执行 tar 命令: tar -zcvf clientOne.tar /root/jiangyu/projects/springCloud/clientOne/springcloud-clientOne/ 报错如题: 2. 解决。 修改 t

大规模敏捷SA(Leading SAFe)证书是什么意思?如何报名,含金量高吗?

大规模敏捷SA(Leading SAFe)证书是什么意思? 常规的敏捷框架适用于中小型项目团队,而且不具有扩展性。基于常规的敏捷框架,SAFe定义了一个可扩展的敏捷框架模型,它适用于大型团队的合作开发,可以提高团队之间的协作性,降低团队管理的复杂性。 SAFe是目前国际上最流行的规模化敏捷方法,将敏捷实践从团队级(team level)有效扩展到项目群级(program level)乃至企业级

[LeetCode] 172. Factorial Trailing Zeroes

题目内容 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零. 题目思路 需要思考一下,到底什么情况下会出现0。那么根据经验,只要碰到包含因子5的数字,就会出现0.(包含5然后包含偶数,而且偶数的数量大于5的个数)。比如5!包含1个

《leetCode》:Factorial Trailing Zeroes

题目 Given an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity. 思路一:不能AC 思路,统计2和5的个数 ,时间复杂度为O(n) int min(int a,int b){return a<b?a:

LightOJ 1282 Leading and Trailing

题意:求n^k的前三位和后三位。(n,k为大数) 分析: 后三位可以用快速幂得到(不足三位要补领0)。重点是求前三位。 n可以写成10^a(a为小数)的形式。因此 n^k = 10^(ak). 而ak可以写成x+y,其中x为ak的整数部分,y为ak的小数部分.其中x决定了位数,y决定了值。 因此只需求出y。 而n=10^a ,所以 a=log10(n) 这里用到了fmod函数,fmod(

LeetCode(31)-Factorial Trailing Zeroes

题目: Given an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity. 思路: 题意是要求一个数字的阶乘,末尾有多少个0要求是对数级别的时间,所以考虑用递归分析一下,产生一个10,后面加0,找到所有的2*5,