• light oj 1236


    第一题给定一个大数,分解质因数,每个质因子的个数为e1,e2,e3,……em,

    则结果为((1+2*e1)*(1+2*e2)……(1+2*em)+1)/2.

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 #include <iostream>
     5 #define M 10000005
     6 #define mod 1000000007
     7 #define ll unsigned long long
     8 using namespace std;
     9 ll prime[M/5],cnt;
    10 bool f[M];
    11 void init()
    12 {
    13     int i,j;
    14     cnt=0;
    15     for(i=2;i<M;i++){
    16         if(!f[i]) prime[cnt++]=i;
    17         for(j=0;j<cnt&&i*prime[j]<M;j++){
    18             f[i*prime[j]]=1;
    19             if(i%prime[j]==0) break;
    20         }
    21     }
    22 }
    23 ll solve(ll n)
    24 {
    25     ll ans=1;
    26     for(ll i=0;i<cnt&&(ll)prime[i]*prime[i]<=n;i++){
    27         if(n%prime[i]==0){
    28             ll t=1;
    29             n/=prime[i];
    30             while(n%prime[i]==0){
    31                 t++;
    32                 n/=prime[i];
    33             }
    34             ans*=(ll)(1+t*2);
    35         }
    36     }
    37     if(n>1) ans=3*ans;
    38     return (ans+1)/2;
    39 }
    40 int main()
    41 {
    42     int t,ca=0;
    43     ll n;
    44     init();
    45     scanf("%d",&t);
    46     while(t--){
    47         scanf("%llu",&n);
    48         printf("Case %d: %llu
    ",++ca,solve(n));
    49     }
    50     return 0;
    51 }
    View Code

    第二题给定一个数N,其质因子pi及个数ei给定,

    则结果为(1+p1+p1^2+……+p1^ei+ei*p1^ei)*……*(1+pm+pm^2+……+pm^em+em*pm^em)+N.

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 #include <iostream>
     5 #define mod 1000000007
     6 #define ll long long
     7 using namespace std;
     8 ll Pow(ll a,int b)
     9 {
    10     ll ans=1;
    11     while(b){
    12         if(b&1) ans=(ans*a)%mod;
    13         b>>=1;
    14         a=(a*a)%mod;
    15     }
    16     return ans;
    17 }
    18 ll sum(ll a,int b)
    19 {
    20     if(b==0) return 1;
    21     if(b&1) return (1+Pow(a,(b+1)/2))*sum(a,b/2)%mod;
    22     else return ((1+Pow(a,b/2+1))*sum(a,b/2-1)%mod+Pow(a,b/2))%mod;
    23 }
    24 int main()
    25 {
    26     int t,ca=0,n,p,e;
    27     scanf("%d",&t);
    28     while(t--){
    29         scanf("%d",&n);
    30         ll ans=1,xx,num=1;
    31         for(int i=0;i<n;i++){
    32             scanf("%d%d",&p,&e);
    33             xx=Pow(p,e);
    34             num=(num*xx)%mod;
    35             xx=(xx*e)%mod;
    36             xx=(xx+sum(p,e))%mod;
    37             ans=(ans*xx)%mod;
    38         }
    39         printf("Case %d: %lld
    ",++ca,(ans+num)%mod);
    40     }
    41     return 0;
    42 }
    View Code
  • 相关阅读:
    supervisor启动错误解决(二)
    删除文件某行
    离线安装
    docker中/var/lib/docker目录迁移
    if else 使用
    Django views函数添加装饰器
    Netty4
    Fast DFS(二)
    Fast DFS(一)
    SpringBoot和app之间跨域问题
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3351598.html
Copyright © 2020-2023  润新知