标签:hit back enter sts while com mil 多少 fine
2 1 3 1 5 1 1 11014 1 14409 9
Case 1: 9 Case 2: 736427HintFor the first sample input, all the 9 pairs of numbers are (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 5), (3, 4), (3, 5).
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<vector> #include<queue> #include<stack> #include<map> #define N 101000 using namespace std; vector<int>q[N]; int num[N]; int a,b,c,d,k; void init(){ for(int i=0;i<=N;i++){ q[i].clear(); } for(int i=1;i<=100000;i++){ int p = i; int pi = sqrt(p); for(int j=2;j<=pi;j++){ if(p%j == 0){ q[i].push_back(j); while(p%j == 0){ p = p/j; } } } if(p!=1){ q[i].push_back(p); } } } __int64 IEP(int ii,int pn){ int pt = 0; __int64 s = 0; num[pt++] = -1; for(int i=0;i<q[ii].size();i++){ int l = pt; for(int j=0;j<l;j++){ num[pt++] = num[j]*q[ii][i]*(-1); } } for(int i=1;i<pt;i++){ s += pn/num[i]; } return s; } int main(){ int T; init(); int kk = 0; scanf("%d",&T); while(T--){ scanf("%d%d%d%d%d",&a,&b,&c,&d,&k); if(b>d){ int e = b; b = d; d = e; } if(k == 0){ printf("Case %d: 0\n",++kk); continue; } b = b/k; c = b+1; d = d/k; __int64 sum = 0; for(int i=1;i<=b;i++){ sum += b - IEP(i,b); } sum = (sum+1)/2; for(int i=1;i<=b;i++){ sum += d - c + 1 - IEP(i,d) + IEP(i,c-1); } printf("Case %d: %I64d\n",++kk,sum); } return 0; }
标签:hit back enter sts while com mil 多少 fine
原文地址:http://www.cnblogs.com/claireyuancy/p/7338350.html