B
来源:互联网 发布:太极熊猫 mac 编辑:程序博客网 时间:2024/04/30 12:30
简直是可怕,这个题,居然是用double。。
简直是神操作,是我太思维僵化了;居然想着只取前四位然后乘,寻找循环规律;
题目网址点击打开链接
对于前三位abc的求法,让我直接饮用大佬的解析
后三位直接用快数幂取余可以求出
前三位我们可以将n^k转化成a.bc * 10^m,这样abc就是前三位了,n^k = a.bc * 10^m
即lg(n^k) = lg(a.bc * 10^m)
<==>k * lg(n) = lg(a.bc) + lg(10^m) = lg(a.bc) + m
m为k * lg(n)的整数部分,lg(a.bc)为k * lg(n)的小数部分
x = lg(a.bc) = k * lg(n) - m = k * lg(n) - (int)(k * lg(n))
a.bc = pow(10, x);
abc = a.bc * 100;
这样前三位数abc便可以求出
#include <iostream>#include<cmath>#include<cstring>#include<cstdio>using namespace std;int Pow(int x,int y){ int res=1; x=x%1000; while(y>0) { if(y&1) res=(res*x)%1000; x=(x*x)%1000; y/=2; } return res;}int main(){ // cout<<Pow(2,2)<<endl; //cout << "Hello world!" << endl; int t; cin>>t; for(int k=1;k<=t;k++) { int a,b; cin>>a>>b; double m=(double)b*log10(a)-(int)(b*log10(a)); m=pow(10,m); int x=m*100; int y=Pow(a,b); cout<<"Case "<<k<<": "; printf("%d %03d\n",x,y); } return 0;}
太强了了了了了了了了了!!!!!!,完全没想到还可以这样搞,真的是 我傻
阅读全文
0 0
- b
- b
- b
- //b
- B
- b
- B
- B
- B
- B
- b
- B
- B
- B
- B
- B
- B
- b
- Tkinter教程之Event篇(2)
- Jetson TX1 开发教程(6)--安卓手机控制TX1和Qt程序打包
- Rust: 如何生成一个水仙花数?
- PyGame常见问题解决
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
- B
- 有符号变量与无符号变量的值的转换
- 第六章:Django对mySQL数据库的增删改查操作
- 【HDU 1698】Just a Hook
- Inside the C++ Model第二讲之 Copy Constructor的构造操作
- DirectX(七)
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?
- 关于传入不同参数请求同一Ajax后返回数据显示错乱的问题
- VMware12 pro装unlocker207补丁后依然没有apple mac选项,问题解决