lightoj 1282 && uva 11029
Leading and Trailing
lightoj 链接:http://lightoj.com/volume_showproblem.php?problem=1282
uva 链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1970
题意:给定 n, k ,求 nk 的前3位和后三位的值。
思路:1、前 3 位:把 nk 转化为 a.bc * 10m ,两边取 10 的对数得到 k * lg(n) = m + lg(a.bc) ( lg(a.bc) < 1 ) 。 所以把 k * lg(n) 减掉整数部分(即 m )就可以得到
lg(a.bc) , 然后计算 10 lg(a.bc) * 100 就能得到答案。
2、后3位:把 k 化成二进制的数,进行快速幂取模运算,没难度。
代码:
lightoj 1282 代码:
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std; typedef long long LL;
int n, k; int front(int n, int k) //前3位
{
double s = k*log10(n) - (int) (k*log10(n)); //取对数
s = pow(, s);
return s * ;
} int rear(int n, int k) //后3位
{
if(!k) return ; //快速幂
LL s = rear(n, k/);
if(k&) s = s*s % * n % ;
else s = s*s % ;
return s % ;
} int main()
{
int t, i;
cin >> t;
for(i = ; i <= t; ++i)
{
scanf("%d%d", &n, &k);
printf("Case %d: %d %03d\n", i, front(n, k), rear(n, k));
}
return ;
}
uva 11029 代码:
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std; typedef long long LL;
int n, k; int front(int n, int k) //前3位
{
double s = k*log10(n) - (int) (k*log10(n)); //取对数
s = pow(, s);
return s * ;
} int rear(int n, int k) //后3位
{
if(!k) return ; //快速幂
LL s = rear(n, k/);
if(k&) s = s*s % * n % ;
else s = s*s % ;
return s % ;
} int main()
{
int t;
cin >> t;
while(t--)
{
scanf("%d%d", &n, &k);
printf("%d...%03d\n", front(n, k), rear(n, k));
}
return ;
}
lightoj 1282 && uva 11029的更多相关文章
- LightOJ 1282 Leading and Trailing (快数幂 + 数学)
http://lightoj.com/volume_showproblem.php?problem=1282 Leading and Trailing Time Limit:2000MS Me ...
- Leading and Trailing LightOJ - 1282 题解
LightOJ - 1282 Leading and Trailing 题解 纵有疾风起 题目大意 题意:给你一个数n,让你求这个数的k次方的前三位和最后三位. \(2<=n<2^{31} ...
- UVA 11029 || Lightoj 1282 Leading and Trailing 数学
Leading and Trailing You are given two integers: n and k, your task is to find the most significant ...
- uva 11029
看了别人的解法 发现了 modf 这个函数 取小数部分 /*********************************************************************** ...
- LightOj 1282 Leading and Trailing
求n^k的前三位数字和后三位数字. 范围: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107). 前三位: 设 n^k = x ---> lg(n^k)=lg(x) - ...
- LightOJ 1282 Leading and Trailing 数论
题目大意:求n^k的前三位数 和 后三位数. 题目思路:后三位数直接用快速幂取模就行了,前三位则有些小技巧: 对任意正数都有n=10^T(T可为小数),设T=x+y,则n=10^(x+y)=10^x* ...
- Uva 11029 Leading and Trailing (求n^k前3位和后3位)
题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include < ...
- lightoj 1282 取对数的操作
/* 前三位 len=log10n^k(乘积的长度) len=klog10n n^k=x*10^(len-1) x=n^k/10^(len-1) log10x = k*log10n - (len-1) ...
- Leading and Trailing LightOJ - 1282 (取数的前三位和后三位)
题意: 求n的k次方的前三位 和 后三位 ...刚开始用 Java的大数写的...果然超时... 好吧 这题用快速幂取模求后三位 然后用一个技巧求前三位 ...orz... 任何一个数n均可以表示 ...
随机推荐
- gitolite 丢失管理密钥/访问权限 解决办法
登录到服务器. 使用完整路径克隆管理员仓库: git clone $HOME/repositories/gitolite-admin.git temp cd gitolite-admin/conf v ...
- [2018 ACL Long] 对话系统
[NLG - E2E - knowledge guide generation] 1. Knowledge Diffusion for Neural Dialogue Generation ( Ci ...
- java poi技术读取到数据库
https://www.cnblogs.com/hongten/p/java_poi_excel.html java的poi技术读取Excel数据到MySQL 这篇blog是介绍java中的poi技术 ...
- 20172330 2017-2018-1 《Java程序设计》第三周学习总结
20172330 2017-2018-1 <Java程序设计>第三周学习总结 教材学习内容总结 这一章的主要内容是关于类与对象,通过对String类,Random类,Math类等一系列道德 ...
- c#数据库乱码
1.sql连接语句加charset=utf8: 2.不要使用odbcConnection. 在由utf8改为latin1时候,需要修改的地方: 1.连接数据库语句中的charset: 2.在sql语句 ...
- 下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- Java之I/O流(第2部分)
1. 节点类类型: 2. 访问文件: Demo_1: import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...
- iOS单利创建的方法
我们在使用单例的时候有两种方法@synchronized,GCD,往往人们使用@synchronized,但是推荐使用GCD: 第一种(@synchronized): + (id)sharedInst ...
- SpringData——HelloWorld
1.背景 最开始了解SpringData的时候,以为他不就是ORM的一种实现方式嘛,还能有什么新的东西.从hibernate到ibatis.mybatis,也许他只不过是spring想整合一个更方便的 ...
- 织梦dede:list标签在列表页同一文章显示两次的解决方法
在列表页用{dede:list}标签调用文章的时候出现了同一篇文章显示两次的问题,经过一天的奋战最后终于解决了,下面CMS集中营站长简单说下我的解决过程来供各位学友参考:1.怀疑是不是每次添加都会自动 ...