zoukankan      html  css  js  c++  java
  • Hdu1695 (GCD) 终于写完了~

    View Code 
     1 #include <stdio.h>
     2 #include <string.h>
     3 #define N 100010
     4 __int64 ol[N];
     5 int zys[N][20],g[N];
     6 void oula()
     7 {
     8 int i,j;
     9 ol[1]=1;
    10 for (i=2;i<N;i++)
    11 {
    12 if (!ol[i])
    13 {
    14 for (j=i;j<N;j+=i)
    15 {
    16 if (!ol[j])
    17 ol[j]=j;
    18 ol[j]=ol[j]*(i-1)/i;
    19 zys[j][g[j]++]=i;
    20 }
    21 }
    22 ol[i]+=ol[i-1];
    23 }
    24 }
    25 __int64 js(int x,int max,int n)
    26 {
    27 int i;
    28 __int64 s=0;
    29 for (i=x;i<g[n];i++)
    30 s+=max/zys[n][i]-js(i+1,max/zys[n][i],n);
    31 return s;
    32 }
    33 int main()
    34 {
    35 int t,f=0,i,a,b,k,max,min;
    36 __int64 s;
    37 memset(ol,0,sizeof(ol));
    38 memset(g,0,sizeof(g));
    39 memset(zys,0,sizeof(zys));
    40 oula();
    41 scanf("%d",&t);
    42 while (t--)
    43 {
    44 scanf("%d%d%d%d%d",&i,&a,&i,&b,&k);
    45 if (k==0)
    46 {
    47 printf("Case %d: 0\n",++f);
    48 continue;
    49 }
    50 max=(a>b)?a:b;
    51 min=a+b-max;
    52 max/=k;
    53 min/=k;
    54 s=ol[min];
    55 for (i=min+1;i<=max;i++)
    56 s+=min-js(0,min,i);
    57 printf("Case %d: %I64d\n",++f,s);
    58 }
    59 return 0;
    60 }
    61
    当你试图了解你的祖国时,你已踏上了犯罪的路程。
  • 相关阅读:
    DIV3E 基环树
    Codeforces Round #663 (Div. 2) D.505
    统计2进制中1的数量
    bitset 用法笔记
    扩展欧几里得
    KM算法(二分图最大权匹配)
    C1. Errich-Tac-Toe (Easy Version) 米奇妙妙屋
    求逆元
    python——标识符及其命名规则
    python基础——python对象概述
  • 原文地址:https://www.cnblogs.com/modiz/p/2855456.html
Copyright © 2011-2022 走看看