<hdu - 1600 - 1601> Leftmost Digit && Rightmost Digit 数学方法求取大位数单位数字
1060题意很简单,求n的n次方的值的最高位数,我们首先设一个数为a,则可以建立一个等式为n^n = a * 10^x;其中x也是未知的;
两边取log10有:lg(n^n) = lg(a * 10^x);
即:n * lg(n) - x = lg(a);
现在就剩x一个变量了,我们知道x是值n^n的位数-1,a向下取整就是我们要求的数;
所以 按着上面的推导式翻译成代码就可以了(注意:数值的范围和之间的强制转换):
/*
* > File Name: 1060.cpp
* > Author: Ddlm2wxm
* > Mail: Ddlm2wxm@163.com
* > Created Time: Wed 23 Nov 2016 09:36:14 PM CST
***************************************************************/ #include<iostream>
#include<cmath>
#include <cstdio>
using namespace std; typedef long long ll;
typedef long double ld; int main() {
int n;
ll num, ans;
ld t;
scanf("%d", &n);
while (n--) {
scanf("%lld", &num);
t = num * log10(num);
ans = pow (, (t - (ll)t));
printf("%lld\n", ans);
}
return ;
}
1060
1061和1060题意一样,只不过这道题是要求最低位上即个位上的数.在之间循环的时候有一些技巧:
①如果是偶数的话,直接第一次循环n * n % 10,然后更换n的值为n * n % 10;这样下一次乘的时候就是两个n和两个n来相乘了,所以我们需要另外找一个变量来进行n的减半操作;循环到底即可。
②如果是奇数的话,在进行减半操作之后,就会变成(n - 1) / 2的数,自然就会少一次n,所以我们需要当n为奇数时候使用res记录一下n的值。循环到底即可。
闲话不多说,上代码:
/*
* > File Name: 1061.cpp
* > Author: Ddlm2wxm
* > Mail: Ddlm2wxm@163.com
* > Created Time: Wed 23 Nov 2016 09:40:03 PM CST
*****************************************************************/ #include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std; int mod_exp (int n) {
int res = , t = n % , b = n;
while (b) {
if (b & ) {
res *= t;
res %= ;
}
t *= t;
t %= ;
b >>= ;
}
return res;
} int main() {
int T, n;
scanf ("%d", &T);
while (T--) {
scanf ("%d", &n);
cout << mod_exp (n) << endl;
}
return ;
}
1061
欢迎码友一起评论更简单的方法,一起成长。
<hdu - 1600 - 1601> Leftmost Digit && Rightmost Digit 数学方法求取大位数单位数字的更多相关文章
- Rightmost Digit(快速幂+数学知识OR位运算) 分类: 数学 2015-07-03 14:56 4人阅读 评论(0) 收藏
C - Rightmost Digit Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- HDU 1061 Rightmost Digit --- 快速幂取模
HDU 1061 题目大意:给定数字n(1<=n<=1,000,000,000),求n^n%10的结果 解题思路:首先n可以很大,直接累积n^n再求模肯定是不可取的, 因为会超出数据范围, ...
- HDU Rightmost Digit
Rightmost Digit Time Limit:1000MS Memory Limit: ...
- 题解报告:hdu 1061 Rightmost Digit(快速幂取模)
Problem Description Given a positive integer N, you should output the most right digit of N^N. Input ...
- 快速幂 HDU 1061 Rightmost Digit *
Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDOJ 1061 Rightmost Digit
找出数学规律 原题: Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Rightmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- hdoj 1061 Rightmost Digit【快速幂求模】
Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDOJ 1061 Rightmost Digit(循环问题)
Problem Description Given a positive integer N, you should output the most right digit of N^N. Input ...
随机推荐
- GitHub 简易使用
笔记内容 学习笔记-段玉磊 Github Github 命令 写这篇文章主要写一下如何运用终端命令,进行Git的配置以及使用,由于本人我不太习惯使用图形IDE,效率没有命令行高,我还是推荐使用命令行进 ...
- C++ 关联容器之map插入相同键元素与查找元素操作
一.插入相同键元素操作 (1)insert方法 在map中的键必须是唯一的,当想map中连续插入键相同但值不同的元素时,编译和运行时都不会发生任何错误,系统会忽略后面的对已存在的键的插入操作,如 ma ...
- HTTP压缩算法SDCH
程序设计中使用的那些共享方法或者技术 前段时间看了个paper是讲述谷歌浏览器使用的压缩方法SDCH,其实原理还是比较简单的. 看了论文后就想总结一下程序中使用的一些共享方法或者技术吧. 1.Goog ...
- JavaScript模板引擎原理
JavaScript模板引擎原理,几行代码的事儿 2013-12-03 16:35 by BarretLee, 650 阅读, 6 评论, 收藏, 编辑 一.前言 什么是模板引擎,说的简单点,就是一个 ...
- formValidator
formValidator输入验证.异步验证实例 + licenseImage验证码插件实例应用 实例技术:springmvc 实现功能:完整用户登录流程.输入信息规则校验.验证码异步校验. 功能 ...
- .NET 微信开放平台接口(接收短信、发送短信)
.NET 微信开放平台接口(接收短信.发送短信) 前两天做个项目用到了微信api功能.项目完成后经过整理封装如下微信操作类. 以下功能的实现需要开发者已有微信的公众平台账号,并且开发模式已开启.接口配 ...
- (coco2d-x初学)xcode5.0安装 cocos2d-x2.2.0
cocos2d-x 2.0版本之后不再支持xcode模板安装. 下面介绍一下创建步骤:我下载的是cocos2d-x2.2.0版本 1.下载Cocos2d-x的地址点击打开链接 2.解压缩压缩包.打开终 ...
- 5款最好用的开源Web快速开发工具
1.Aptana Studio Aptana是一个用于HTML,CSS和JavaScript的网站开发工具.目前在社区里有成千上万的人在开发Aptana的插件. Apatana Studio官网:ht ...
- WCF学习笔记之传输安全
WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...
- qt的安装及连接sql使用注意
qt安装与使用 今天写下qt使用的注意事项,qt-project.org上已经更新了qt5的相关库,但是建议不是很熟系qt的朋友,或者说想使用传统qt api而不是qml的朋友, 继续下载老版本4.8 ...