Leading and Trailing (快速取模和数字取前三位)

来源:互联网 发布:淘宝手机详情有用吗 编辑:程序博客网 时间:2024/05/19 13:24

Leading and Trailing

#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;const int modn=1000;//快速取模ll powermod(ll x,ll mod,ll n){    ll ans = 1;    while(n>0)    {        if(n & 1) ans = ans*x%mod;        x = x*x%mod;        n >>= 1;//位运算相当于除2    }    return ans;}int main(){    int t;    cin>>t;    for(int i=1;i<=t;i++)    {        ll n,k;        ll lead,trail=1;        cin>>n>>k;        //后三位        trail=powermod(n,modn,k);        //前三位这个有关于一个知识点恩。n可以表示为10^a,n^k=10^ak=10^x*10^y,,x y分别表示ak的小数部分和整数部分        //double a=(double)log(n)/(double)log(10);         double a=(double)log10(1.0*n);         a=a*k;         a=a-ll(a);         lead=pow(10,a)*100;        printf("Case %d: %lld %03lld\n",i,lead,trail);     }     return 0; } 
阅读全文
0 0