标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
#include<bits/stdc++.h> using namespace std; #define ll __int64 #define inf 1e18 ll p[100],flag,x,ans; ll getp(ll x) { flag=0; for(ll i=2;i*i<=x;i++) { if(x%i==0) { p[flag++]=i; while(x%i==0) x/=i; } } if(x!=1) p[flag++]=x; } ll gcd(ll x,ll y) { return y==0?x:gcd(y,x%y); } void dfs(ll lcm,ll step,ll pos) { if(lcm>x)return; if(pos==flag) { if(step&1) ans+=x/lcm; else ans-=x/lcm; return; } dfs(lcm,step,pos+1); dfs(lcm/gcd(lcm,p[pos])*p[pos],step+1,pos+1); } int main() { ll y,z,i,t; int T; scanf("%d",&T); while(T--) { scanf("%I64d%I64d",&x,&y); ans=0; for(i=1;i<=y;i++) { getp(i); dfs(1,1,0); } printf("%I64d\n",ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/jhz033/p/5515482.html