B - Leading and Trailing LightOJ - 1282(数学加快速幂)
2017-07-22 22:57
423 查看
简直是可怕,这个题,居然是用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;
4000
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;
}
太强了了了了了了了了了!!!!!!,完全没想到还可以这样搞,真的是 我傻
简直是神操作,是我太思维僵化了;居然想着只取前四位然后乘,寻找循环规律;
题目网址点击打开链接
对于前三位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;
4000
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;
}
太强了了了了了了了了了!!!!!!,完全没想到还可以这样搞,真的是 我傻
相关文章推荐
- 1282 - Leading and Trailing ---LightOj1282(快速幂 + 数学)
- LightOJ - 1282 Leading and Trailing【数学】
- LightOJ1282 - Leading and Trailing(快速幂+数学)
- lightoj-1282-Leading and Trailing【快速幂】(两个数学函数的使用)
- LightOJ 1282 Leading and Trailing (快数幂 + 数学)
- lightoj 1282 - Leading and Trailing (数学--log使用)
- lightoj 1282 - Leading and Trailing 【数学】
- LightOJ - 1282 Leading and Trailing
- LightOj 1282 Leading and Trailing
- LightOJ - 1282 Leading and Trailing
- Lightoj1282(HDOJ1060) - Leading and Trailing
- LightOJ - 1282 B - Leading and Trailing——快速幂运算
- lightoj1282 - Leading and Trailing(水题)
- LightOJ 1282 - Leading and Trailing(快速幂取模)
- LightOJ1282_Leading and Trailing _对数求前三位数&快速幂
- LightOJ-1282 Leading and Trailing 模算数 快速幂 对数的用法
- [LightOJ1282]Leading and Trailing
- lightOJ 1282 Leading and Trailing
- LightOJ 1282 Leading and Trailing(n阶的前三位,后三位)
- lightoj 1282 Leading and Trailing