• LightOJ-1028 Trailing Zeroes (I)---因子数目


    题目链接:

    https://cn.vjudge.net/problem/LightOJ-1028

    题目大意:

    一个十进制数1n1012,现在用base进制来表示,问有多少种表示方法使得最后一位上的数为0?
    等同于求出n有多少种约数,即n%base==0

    解题思路:

    模板大法

    注意:base进制不可能为1,算出的结果应该减去因子1

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<queue>
     7 #include<stack>
     8 #include<map>
     9 #include<sstream>
    10 #define Mem(a, b) memset(a, b, sizeof(a))
    11 using namespace std;
    12 typedef long long ll;
    13 const int INF = 1e9 + 7;
    14 const int maxn = 1000000+10;
    15 int prime[maxn];
    16 bool is_prime[maxn];
    17 int sieve(int n)//返回n以内素数的个数
    18 {
    19     int p = 0;
    20     for(int i = 0; i <= n; i++)is_prime[i] = 1;
    21     is_prime[0] = is_prime[1] = 0;
    22     for(ll i = 2; i <= n; i++)
    23     {
    24         if(is_prime[i])
    25         {
    26             prime[p++] = i;
    27             for(ll j = i * i; j <= n; j += i)is_prime[j] = 0;//这里涉及i*i,必须使用long long
    28         }
    29     }
    30     return p;
    31 }
    32 
    33 ll Divisors_num(ll n, int tot)//素数总数
    34 {
    35     ll ans = 1;
    36     for(int i = 0; i < tot && prime[i] * prime[i] <= n; i++)
    37     {
    38         if(n % prime[i] == 0)
    39         {
    40             int cnt = 0;
    41             while(n % prime[i] == 0)
    42             {
    43                 cnt++;
    44                 n /= prime[i];
    45             }
    46             ans *= (cnt + 1);
    47         }
    48     }
    49     if(n > 1)ans *= 2;
    50     return ans;
    51 }
    52 int main()
    53 {
    54     int T, cases = 0;
    55     int tot = sieve(1000000);
    56     cin >> T;
    57     while(T--)
    58     {
    59         ll n;
    60         cin >> n;
    61         cout<<"Case "<<++cases<<": "<<Divisors_num(n, tot)-1<<endl;
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    1722 最优乘车 1997年NOI全国竞赛
    tarjan算法详解
    codevs 原创抄袭题 5969 [AK]刻录光盘
    Kosaraju算法详解
    1722 最优乘车 未完成
    codevs原创抄袭题 5960 信使
    1405 奶牛的旅行
    android 管理Bitmap内存
    Dynamics CRM 2013 初体验(3):新增加的功能
    在android画面切换时设置跟随变动的小圆圈
  • 原文地址:https://www.cnblogs.com/fzl194/p/9017510.html
Copyright © 2020-2023  润新知