zoukankan      html  css  js  c++  java
  • 【LightOJ1282】Leading and Trailing(数论)

    【LightOJ1282】Leading and Trailing(数论)

    题面

    Vjudge
    给定两个数n,k 求n^k的前三位和最后三位

    题解

    这题。。真的就是搞笑的
    第二问,直接输出快速幂(mod 1000)的值,要补前导零
    第一问。。。就是搞笑的
    依旧是快速幂
    但是用double来算
    每次中间值只要大于1000
    直接除得小于1000就行了
    不会就看代码把。。
    这题就是搞笑的。。。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    using namespace std;
    inline int read()
    {
    	int x=0,t=1;char ch=getchar();
    	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    	if(ch=='-')t=-1,ch=getchar();
    	while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    	return x*t;
    }
    int n,k,T;
    int fpow(int a,int b)
    {
    	a%=1000;int s=1;
    	while(b){if(b&1)s=a*s%1000;a=a*a%1000;b>>=1;}
    	return s;
    }
    void write(int x)
    {
    	int kk[5];
    	for(int i=1;i<=3;++i)kk[i]=x%10,x/=10;
    	for(int i=3;i;--i)printf("%d",kk[i]);
    }
    double ppp(double a,int b)
    {
    	double s=1;
    	while(b)
    	{
    		if(b&1)s=s*a;
    		a=a*a;
    		b>>=1;
    		while(a>=1000)a/=10;
    		while(s>=1000)s/=10;
    	}
    	return s;
    }
    int main()
    {
    	int T=read();
    	for(int gg=1;gg<=T;++gg)
    	{
    		n=read();k=read();
    		printf("Case %d: ",gg);
    		write(ppp(n,k));printf(" ");
    		write(fpow(n,k));puts("");
    	}
    }
    
    
  • 相关阅读:
    关于firstChild,firstElementChild和children
    trim(),正则表达式中文匹配
    Shell之基本用法
    Samba服务部署
    Linux基础(3)
    linux基础(2)
    Linux基础(1)
    网络基础及网络协议
    操作系统简介
    为何要学习计算机基础
  • 原文地址:https://www.cnblogs.com/cjyyb/p/8250341.html
Copyright © 2011-2022 走看看