HDU 6433(2的n次方 **)
题意是就是求出 2 的 n 次方。
直接求肯定不行,直接将每一位存在一个数组的各个位置即可,这里先解出 2 的 n 次方的位数,再直接模拟每一位乘以 2 即可得到答案。
求解 2 的 n 次方的位数的方法:len = n * lg(2) (lg(2):以 10 为底 2 的对数)
证明:在判断一个数有多少位时,常将这个数多次除以 10,够除多少次,就是几位数。设 2 的 n 次方有 k 位数,则 2 ^ n < 10 ^ k,两边同时以 10 为底取对数,则 n * lg(2) < k ,那么 2 的 k 次方的位数就等于对 n * lg(2) 向上取整。
(其实个人对于这个证明不太满意)
在 咸鱼98 同学的指点下,对于求解 2 的 n 次方的位数的方法有了更好的证明:
ans = 2^n;
len = log(10, ans); //以 10 为底 ans 的对数向上取整就是ans的长度
len = log(10, ans) = log(10, 2) * log(2, ans) ; //换底公式
log(2, ans) = log(2, 2^n) = n;
len = log(10, 2) * n;
代码如下:
#include <bits/stdc++.h>
using namespace std;
int t,n,ans[];
int main()
{
scanf("%d",&t);
while(t--)
{
memset(ans,,sizeof(ans));
scanf("%d",&n);
ans[] = ;
int len = n*0.301029;//log(2) = 0.301029995663981195...
while(n--)
{
for(int i = len; i >= ; i--)
{
ans[i+] += ans[i]/; // ans[i+1] += ans[i]*2/10
ans[i] = (ans[i]*)%;
}
}
for(int i = len; i >= ; i--)
printf("%d",ans[i]);
printf("\n");
}
return ;
}
HDU 6433(2的n次方 **)的更多相关文章
- HDU——1061Rightmost Digit(高次方,找规律)
Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU - 6433: H. Pow (简答题,输出大数)
There are n numbers 3^0, 3^1, . . . , 3^n-1. Each time you can choose a subset of them (may be empty ...
- HDU 1061 N^N (n的n次方的最后一位)
题目意思: http://acm.hdu.edu.cn/showproblem.php?pid=1061 求N^N的最后一位数. 题目分析: 此题有非常多种方法,主要是中循环节,看自己怎么找了.我的方 ...
- hdu 4059 数论+高次方求和+容斥原理
http://acm.hdu.edu.cn/showproblem.php? pid=4059 现场赛中通过率挺高的一道题 可是容斥原理不怎么会.. 參考了http://blog.csdn.net/a ...
- HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5047 Sawtooth(大数模拟)上海赛区网赛1006
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5047 解题报告:问一个“M”型可以把一个矩形的平面最多分割成多少块. 输入是有n个“M",现 ...
- HDU 5053 the Sum of Cube
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5053 解题报告:用来陶冶情操的题,求a到b的三次方的和. #include<stdio.h> ...
- HDU 4578 Transformation (线段树区间多种更新)
http://acm.hdu.edu.cn/showproblem.php?pid=4578 题目大意:对于一个给定序列,序列内所有数的初始值为0,有4种操作.1:区间(x, y)内的所有数字全部加上 ...
- HDU 4915 Parenthese sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 解题报告:从前往后遍历一次,每次判断')'的数目是不是满足 n < (i +1)/ 2,从 ...
随机推荐
- 【BZOJ4890】[TJOI2017]城市(动态规划)
[BZOJ4890][TJOI2017]城市(动态规划) 题面 BZOJ 洛谷 题解 数据范围都这样了,显然可以暴力枚举断开哪条边. 然后求出两侧直径,暴力在直径上面找到一个点,使得其距离直径两端点的 ...
- LOJ #2205. 「HNOI2014」画框 解题报告
#2205. 「HNOI2014」画框 最小乘积生成树+KM二分图带权匹配 维护一个\((\sum A,\sum B)\)的匹配下凸包,答案在这些点中产生. 具体的,凸包两端可以直接跑单独的\(A\) ...
- CF983A Finite or not?(数学)
题意:给出分母,分子和进制,要求判断该数是否为有限小数. Solution 表示并不知道怎么判断. 度娘:“一个分数在最简分数的情况下,如果它的分母只含有2和5两个质因数,这个分数就能化成有限小数.” ...
- Permissions 0755 for '/home/lonecloud/.ssh/id_rsa' are too open.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! ...
- gei 操作
git --version 查看版本号 进入项目文件 上传账号的用户名git config --global user.name "牛星宇" 上传账号的邮箱git config - ...
- Keyboard Hook API函数 参数说明
来源:https://www.cnblogs.com/grenet/archive/2010/12/07/1898840.html 1.Keyboard的HOOK函数分为两种,WH_KEYBOARD_ ...
- python常用的内置模块
1.import time time模块与时间相关的功能 在python中时间分为3种 1.时间戳timestamp从1970 1月 1日到现在的秒数 主要用于计算两个时间的差 2.localtime ...
- java利用线程池处理集合
java利用线程池处理集合 2018年07月23日 17:21:19 衍夏成歌 阅读数:866 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/s ...
- Day14--Python--函数二,lambda,sorted,filter,map,递归,二分法
今日主要内容:1. lambda 匿名函数 lambda 参数: 返回值-------------------------------------def square(x): return x**2 ...
- C++ template一些体悟(1)
#include <iostream> using namespace std; template<typename T> class testClass { public: ...