Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 14 Accepted Submission(s) : 7
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
你可以假设n k至少有6位数。
Sample Input
3 123456 1 123456 2 2100000056 67333
Sample Output
123...456 152...936 982...016
Author
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std;
#define max 1000000000
char a[100];__int64 num1;double num2;
__int64 fun1(__int64 a, int n)
{
__int64 t;
if(n==1) return num1;
else {
t=fun1(a,n/2);
if(n%2==0)return (t*t)%1000;//(t*t才有意义取模嘛)
else return num1*((t*t)%1000)%1000; //等待n等于1的返回
}
}
double fun2(double n,double k)
{
double ans;
// printf("pow=%lf\n",k*log10(n)-floor(k*log10(n) ) );
ans=pow(10,k*log10(n)-floor(k*log10(n) ) );
// printf("ans=%lf\n",ans);
return ans;
}
int main()
{
__int64 result,shu1;
double shu3,ji=10;
int shu2,n,k,i,len,;
scanf("%d",&n);
while(n--)
{
scanf("%s %d",a,&k);
len=strlen(a);
num1=(a[len-1]-'0')+(a[len-2]-'0')*10+(a[len-3]-'0')*100;
ji=1 ;
num2=0;
for(i=len-1;i>=0;i--)
{
num2+=(double)(a[i]-'0')*ji; //把字符串a化成整数存在变量num2中
ji*=10;
}
shu1=fun1(num1,k);
// cout<<shu1<<endl;
shu3=fun2(num2,(double)(k));
shu2=(int)(shu3*100);
if(shu1<10) printf("%d...00%I64d\n",shu2,shu1);
else if(shu1<100) printf("%d...0%I64d\n",shu2,shu1);
else printf("%d...%I64d\n",shu2,shu1);
}
}