zoukankan      html  css  js  c++  java
  • virtual hust 2013.6.20 数论基础题目 D

    题目:Just the Facts

    思路:枚举10000素数内,各因子出现的次数,然后取模为10。因为0是由2和5构成的,所以2和5的幂单独讨论,同时由于2的幂肯定大于5的,所以我们最后要算的再乘上2的减去后的幂就可以得到。

    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    using namespace std;
    const int maxn=10001;
    int n_prime=0;
    int prime[maxn];
    int vis[maxn];
    void Prime()
    {
        memset(vis,1,sizeof(vis));
        vis[0]=vis[1]=0;
        for(int i=2;i<maxn;i++)
            if(vis[i])
            {
                prime[++n_prime]=i;
                for(int j=2*i;j<maxn;j+=i)
                    vis[j]=0;
            }
    }
    int get(int n,int p)
    {
        int ans=0;
        int tmp=p;
        while(n>=tmp)
        {
            ans+=n/tmp;
            tmp*=p;
        }
        return ans;
    }
    long long Pow(long long a,long long b)
    {
        long long ans=1;
        while(b)
        {
            if(b&1)
            {
                b--;
                ans=(ans*a)%10;
            }
            else
            {
                b/=2;
                a=(a*a)%10;
            }
        }
        return ans;
    }
    int main()
    {
        Prime();
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            long long ans=1;
            for(int i=1;i<=n_prime;i++)
            {
                if(prime[i]==5||prime[i]==2)
                    continue;
                ans=(ans*Pow(prime[i],get(n,prime[i])))%10;
            }
            ans=(ans*Pow(2,get(n,2)-get(n,5)))%10;
            printf("%5d -> %lld
    ",n,ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    数据结构之c++感悟
    常见linux系统中RPM包的通用命名规则
    scripts
    http
    iscsi
    RHCE认证经典考题
    数据库
    配置空客户端邮件
    配置nfs服务
    Python版本的7大排序
  • 原文地址:https://www.cnblogs.com/overflow/p/3146741.html
Copyright © 2011-2022 走看看