ACM_求N^N的最高位数
Leftmost Digit
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
给定一个正整数N,你应该输出N ^ N的最左边的数字。
Input:
输入包含多个测试用例。 输入的第一行是单个整数T,它是测试用例的数量。 T测试用例如下。
每个测试用例都包含一个正整数N(1 <= N <= 10000)。
Hint:64位整数使用long long int,输入输出%lld.
Output:
对于每个测试用例,您应该输出N^N的最左边的数字。
Sample Input:
2
3
4
Sample Output:
2
2
解题思路:对一个数N,用科学计数法表示为N=a*10^m,此时a的整数部分即为N的最高位数字,N^N的最左边的数字a即为题目所求。
所以N^N=a*10^m,两边取对数得N*lg(N)=m+lg(a);因为0<a<10,所以0<lg(a)<1,令x=lg(a)+m(m为x的整数部分),x=N*lg(N);
则a=10^(x-m)=10^(x-(int)x),注意这里的N最大为10^4,即x=N*lg(N)=4*10^4,x小于int范围内,所以x强转为int即为m,最后输出(int)a整数部分即可。
pow(x,y)函数计算x的y次幂。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T,N;
while(cin>>T){
while(T--){
cin>>N;
double x=N*log10(N);
double g=x-(int)x;
cout<<(int)pow(,g)<<endl;
}
}
return ;
}
加强版(涉及推导数论知识)详解看这里:ACM_求N^N的前5位数和后5位数(数论)
ACM_求N^N的最高位数的更多相关文章
- OpenJudge计算概论-求满足条件的3位数
/*======================================================================== 求满足条件的3位数 总时间限制: 1000ms 内 ...
- Python3练习题 001:4个数字求不重复的3位数
#Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...
- ACM_求N^N的前5位数和后5位数(数论)
NNNNN Time Limit: 2000/1000ms (Java/Others) Problem Description: 对于整数N,求N^N的前5位和后5位(1057题加强版) Input: ...
- Openjudge-计算概论(A)-求满足条件的3位数
描述: 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件. 输入输入一个数n,n的大小不超过实 ...
- ACM_求第k大元素(两次二分)
求第k大 Time Limit: 6000/3000ms (Java/Others) Problem Description: 给定两个数组A和B,大小为N,M,每次从两个数组各取一个数相乘放入数组C ...
- ACM_求补集的交集
求补集的交集 Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定一个集合,然后再给出两个该集合的子集,求他们对应补集的交集. I ...
- ACM_求f(n)
求f(n) Time Limit: 2000/1000ms (Java/Others) Problem Description: 设函数f(n)=1*1*1+2*2*2+3*3*3+...+n*n*n ...
- ACM_求交集
求交集 Time Limit: 2000/1000ms (Java/Others) Problem Description: 输入集合A和B,按大小顺序输出A和B的交集. Input: 输入包含多组测 ...
- Python练习题 001:4个数字求不重复的3位数
听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...
随机推荐
- Angular2.x-服务
heroes之旅HeroesComponent目前正在获取并显示虚假数据. 在本教程重构之后,HeroesComponent将会精益求精并专注于支持视图.用模拟服务进行单元测试也会更容易. 为什么服务 ...
- 【Mongodb教程 第九课 】MongoDB 删除文档
remove() 方法 MongoDB的 remove() 方法用于从集合中删除文档.remove() 方法接受两个参数.第一个是删除criteria ,第二是justOne标志: deletion ...
- GCC 编译详解 (转)
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Jav ...
- 《C++ Primer Plus》学习笔记3
<C++ Primer Plus>学习笔记3 第8章 函数探幽 ============================================================== ...
- [IT学习]GIT 学习
最近开始了解GIT.有一些不错的资源记录在下面: 1.GIT for teams A book about teams cooperation. 2.GIT https://learngitbranc ...
- [m() for i in range(8)]
import time def m(): print(time.time()) time.sleep(1) [m() for i in range(8)] 一行 list
- 用css解决Unigui在IE系列浏览器中字体变小的问题(设置UniServeModule的customcss属性)
Unigui运行在chrome浏览器下可以有最佳的效果,但用ie打开用unigui做的项目会发现字体明显小一截,可以用自定义css来解决这个问题. 可以在UniServeModule的customcs ...
- MYSQL之数据库初窥
mysql数据库 1.数据库简单介绍 数据库概念:是依照数据结构来组织.存储和管理数据的仓库. 2.经常使用术语 数据库:是一些关联表的集合 数据表:表是数据的矩阵,在数据库中看起来 ...
- YTU 2911: 我想放假
2911: 我想放假 时间限制: 1 Sec 内存限制: 128 MB 提交: 124 解决: 46 题目描述 小明的弟弟上小学了,每次刚入学就想知道什么时候放假,但是每学期开学的日子和每学期的有 ...
- 利用js和CSS实现网页局部打印
1 局部打印方法: 作用:将id为dayin的内容,新建页面并打印,可解决打印某页面中的部分内容的问题.使用方法:将要打印的内容通过 <span id="dayin"> ...