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

 

posted on 2013-01-10 21:38  Modiz  阅读(130)  评论(0编辑  收藏  举报