(1= <N<=1000000000);
题目分析:
暴力解决是不可行的,无论从时间上还是从占用内存上来看都是A不了的,所以要用点技巧,令N^N=d.xxxx*10^(k-1),其中k代表数的位数,那么d.xxxx=10^(lgN^N-(k-1)),再对d.xxxx取整就是最终结果。因为k等于lgN^N的整数部分加1,所以k=lg(N^N+1)取整,至此,就获得了d的计算公式d=10^(lgN^N-lg10N^N)取整,代码如下:
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> using namespace std; int main() { int t,N; double x=0; cin>>t;
while(t--) { cin>>N; x=N*log10((double)N); x=x-(int)x; x=(int)pow(10,x); cout<<x<<endl; } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。