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均可以表示 ...
随机推荐
- python常用命令—查看模块所在位置
环境:ipython3 交互式解释器 语法: import 模块名 模块名.__file__ 功能: 查看模块的所在位置 例:
- 将SqlDataReader 数据集转化为datatbale ,在将datatable 转化为iList
public IList GetModelList(string tablename, string where) { IList list = null; DataTable dataTable = ...
- es6从零学习(四):Class的继承
es6从零学习(四):Class的继承 一:继承的方式 1.Class 可以通过extends关键字实现继承 class Point { } class ColorPoint extends Poin ...
- TCP系列02—连接管理—1、三次握手与四次挥手
一.TCP连接管理概述 正如我们在之前所说TCP是一个面向连接的通信协议,因此在进行数据传输前一般需要先建立连接(TFO除外),因此我们首先来介绍TCP的连接管理. 通常一次完整的TCP数据传输一般包 ...
- <Effective C++>读书摘要--Inheritance and Object-Oriented Design<一>
1.Furthermore, I explain what the different features in C++ really mean — what you are really expres ...
- MySQL优化之profile
分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...
- matlab中滤波函数
matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...
- 第25天:js-封装函数-淘宝鼠标展示
封装函数: 1.函数形参相当于变量,不能加引号. 2.实参要和形参一一对应. 案例:鼠标移到小图上,背景展示相应放大的图片.代码如下: <!DOCTYPE html> <html l ...
- Matlab 之 im2col 【转】
函数原型: B=im2col(A,[m n],block_type) 功能:将矩阵A分为m×n的子矩阵,再将每个子矩阵作为B的一列 (1)当block_type为distinct时,将A分解为互不重叠 ...
- 【codevs1380】没有上司的舞会 树形dp
题目描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数 ...