LightOJ1282 Leading and Trailing 大数取首尾
发布时间:2021-01-28 04:03:03 所属栏目:大数据 来源:网络整理
导读:任何一个数都可以转换为10^k,k是一个小数,k的整数部分决定了这个数的位数,小数部分决定了每一位的值,根据此可以快速找到前三位。 通过快速幂取模可以快速找到后三位。 题目链接:http://acm.hust.edu.cn/vjudge/problem/26992 #pragma comment(linker,"/
题目链接:http://acm.hust.edu.cn/vjudge/problem/26992 #pragma comment(linker,"/STACK:1024000000,1024000000") #include<cstdio> #include<iostream> #include<sstream> #include<cstdlib> #include<cmath> #include<cctype> #include<string> #include<cstring> #include<algorithm> #include<stack> #include<queue> #include<set> #include<map> #include<ctime> #include<vector> #include<fstream> #include<list> using namespace std; #define ms(s) memset(s,sizeof(s)) typedef unsigned long long ULL; typedef long long LL; const int INF = 0x3fffffff; long long q_mod(long long a,long long b,int m){ long long ans = 1; for( ; b; b >>= 1){ if(b&1) ans = ans*a % m; a = a*a % m; } return ans; } int main() { // freopen("F:input.txt","r",stdin); // freopen("F:output.txt","w",stdout); // ios::sync_with_stdio(false); int t; int n,k; double ans; int ans1,ans2; scanf("%d",&t); for(int cas = 1; cas <= t; ++cas){ scanf("%d%d",&n,&k); ans = (double)k*log10(n); ans = ans - (int)ans; ans = pow(10,ans); ans1 = (int)(ans*100.0); ans2 = (int)q_mod(n,k,1000); printf("Case %d: %03d %03dn",cas,ans1,ans2); } return 0; } (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |