博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ZOJ2277】The Gate to Freedom
阅读量:6669 次
发布时间:2019-06-25

本文共 968 字,大约阅读时间需要 3 分钟。

题意

输出\(n^n\)的首位的数字。

题解

用科学计数法表示\(n^n=k\cdot 10^b\),那么\(n log_{10} n=log_{10} k+b\),b就是\(n^n\)的位数,因此是\(\lfloor n log_{10} n\rfloor\)

\(k=10^{n log_{n}-b}\)取k的整数部分即可。
我比赛的时候没想到这样做,于是转为小数,再用快速幂暴力做的。

代码

#include 
#include
#include
#include
using namespace std;int n;int main() { while(~scanf("%d",&n)) printf("%d\n",(int)pow(10,n*log10(n)-(int)(n*log10(n)))); return 0;}

快速幂暴力

#include 
#include
#include
#include
#define ll long longusing namespace std;double pow(double a,int b){ double ans=1; while(b){ if(b&1){ ans=ans*a; } a=a*a; while(a<0.01)a*=10; b>>=1; } return ans;}int main() { int n; while(~scanf("%d",&n)){ double t=n; while(t>=1)t/=10; double ans=pow(t,n); while(ans<1)ans*=10; printf("%d\n",(int)ans); } return 0;}

转载地址:http://zqoxo.baihongyu.com/

你可能感兴趣的文章
函数类型
查看>>
Break和Continue的用法
查看>>
CMD命令
查看>>
Angular练习题
查看>>
backbone 学习之history
查看>>
【转】Unity3D运行时刻资源管理
查看>>
【Java】数组升序和降序
查看>>
Implement Trie (Prefix Tree)
查看>>
【佛法】由佛法观爱情与人生——一位居士对爱情、婚姻和家庭的体悟
查看>>
Recover Binary Search Tree
查看>>
随机输出10个0到9的不重复的自然数
查看>>
ASP.NET Core HTTP 管道中的那些事儿
查看>>
加速数组操作(Array)
查看>>
收集计算机分区信息,去除列中的重复值(Excel)(空行)
查看>>
Python抓取zabbix性能监控图
查看>>
JDBC进行数据库的--增--删--改--案例----纯代码
查看>>
纪录一个table元素里面的tr th td
查看>>
sql查询语句心得
查看>>
利用css3制作的几个loading图
查看>>
第一次作业
查看>>