神奇的数学公式。。。求《k次方》的前三位与后三位

来源:互联网 发布:软件开发费用组成 编辑:程序博客网 时间:2024/05/29 15:10

    总的来说该题没有什么太大的思想要求,主要是运用了一个神奇的数学公式。

即在求前三位数的时候,求总的位数:t=log10((double)n)+1;之后再运用一个公式:n^k/10^(t-3);

#include<stdio.h>#include<math.h>int pow_mod(int a,int n,int m){    if(n==0)return 1;    int x=pow_mod(a,n/2,m);    long long ans=(long long)x*x%m;    if(n%2==1)ans=ans*a%m;    return (int)ans;}int main(){    int n,k,T,head,tail,t;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&n,&k);        tail=pow_mod(n%1000,k,1000);        t=k*log10((double)n)+1;        for(head=100;log(head)<=k*log(n)-(t-3)*log(10);head++);        head--;        printf("%3d...%03d\n",head,tail);    }    return 0;}


 

原创粉丝点击