ll dfs(int pos,int pre,bool sta,bool limit) { if (pos==-1) return 1; if (!limit&&dp[pos][sta]!=-1) return dp[pos][sta]; int up = limit?a[pos]:9; ll ans = 0; for (int i = 0 ; i <= up ; i ++) { if (pre==6&&i==2) continue; if (i==4) continue; ans += dfs(pos-1,i,i==6,limit&&i==pos[a]); } if (!limit) dp[pos][sta] = ans; return ans; }
ll solve(ll n) { pos = 0; while (n) { a[pos++] = n%10; n /= 10; } return dfs(pos-1,0,false,true); }
int main() { int n,m; memset(dp,-1,sizeof(dp)); while (~scanf("%d%d",&n,&m)&&(n||m)) { if (n>m) { n = n^m; m = n^m; n = n^m; } printf("%lld\n",solve(m)-solve(n-1)); } }
void init() { for (int i = 2 ; i <= maxn ; i ++) { if (!isprime[i]) { for (int j = i ; j <= maxn ; j += i) { isprime[j] = true; ft[j].push_back(i); } } }
}
ll solve(int x,int sta,ll n) { int pos = 0; ll temp = 1; while (sta) { if (sta&1) temp *= ft[x][pos]; pos ++; sta >>= 1; }
return n/temp; }
int main(){ init(); int T,t=1; scanf("%d",&T); while (T--) { scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k); printf("Case %d: ",t++); if (k==0) { printf("0\n"); continue; } b/=k;d/=k;
if (b*d==0) printf("0\n"); else { if (b>d) swap(b,d); ll ans = 0; for (int i = 1 ; i <= d ; i ++) { ans += min(i*1LL,b); for (int j = 1 ; j < (1<<ft[i].size()); j ++) { ll temp = solve(i,j,min(i*1LL,b));int cp = j,cnt = 0; //printf("cp = %d\t",cp); while (cp) { cp -= cp&(-cp); cnt++; } //printf("cnt = %d\n",cnt); if (cnt&1) ans -= temp; else ans += temp; } } printf("%lld\n",ans);
const int maxn = 2e5+200; const int mod = 1e9+7; int n; ll ans;
bool isprime[maxn]; ll pf[maxn]; int pn[maxn]; ll arr[maxn];
void init() { memset(isprime,true,sizeof(isprime)); for (int i = 2; i <= maxn ; i ++) { if (isprime[i]) { for (int j = i ; j <= maxn ; j+= i) { if(!pf[j]) pf[j] = i; else pf[j] *= i; pn[j]++; if (j!=i) isprime[j] = false; } } }
}
ll qp(ll a ,int n) { ll res = 1; while (n) { if (n&1) res= res*a%mod; a = a*a %mod; n >>= 1; } return res; }
ll solve(int p) { int i = 1; ll res = 1; while (i<=n) { int l = i,r = n+1 ,mid; int x = arr[i]/p; while (1) { if (l==r-1) break;
mid = (l+r)>>1; if (x==arr[mid]/p) l = mid; else r = mid; }
res = res*qp(x,l-i+1)%mod; i = l +1; } return res%mod; }
int main() { int T,t=1; init(); scanf("%d",&T);
while (T--) { ans = 0; scanf("%d",&n); for (int i = 1 ; i <= n ; i ++) scanf("%lld",&arr[i]);
sort(arr+1,arr+n+1); int up = arr[1]; for (int i = 2 ; i <= up ; i ++) { if (i!=pf[i]) continue; ll tmp = solve(i); if (pn[i]&1) ans += tmp%mod; else ans -= tmp%mod; ans %=mod; ans = (ans+mod)%mod; } printf("Case #%d: %lld\n",t++,ans%mod); }
ll quickpow(ll a,ll n) { ll res = 1; while (n) { if (n&1) res = res*a; a = a *a; n >>= 1; } return res; }
void factorfind(int x) { cnt = 0; for (int i = 2 ; i * i <= x ; i ++) { if (x%i==0) { factor[++cnt] = i; while (x%i==0) x /= i; } } if (x!=1) factor[++cnt] = x; return; }
ll dfs(int now,int all,int pos) { if (now==all) { int x = m; for (int i = 1; i <= all ; i ++) x /= pr[i]; return quickpow(x,n); } ll res = 0; for (int i = pos ; i <= cnt; i ++) { pr[now+1] = factor[i]; res += dfs(now+1,all,i+1);
} return res; }
ll solve(int t) { return dfs(0,t,1); }
int main(){
while (~scanf("%d%d",&n,&m)) { factorfind(m); ll ans = 0; for (int i = 1 ; i <= cnt ; i ++) { ll temp = solve(i);
if (i&1) ans += temp; else ans -= temp; } ans = quickpow(m,n)-ans; printf("%lld\n",ans);
int divide(int x) { int cnt =0; for (int i = 2 ; i *i <= x ; i ++) { if (x%i==0) { cnt++; x /= i; if (x%i==0) return -1; } } if (x!=1) cnt++; return cnt; }
ll quickpow(ll a, ll n) { ll res= 1; while (n) { if (n&1) res= res*a; a = a*a; n >>=1; } return res; }
ll solve(ll x) { ll rt = (ll)pow(n*1.0,1.0/x); if (quickpow(rt,x)<=n) { while (quickpow(rt+1,x)<=n&&rt+1<=up[x]) rt ++; } else { while (quickpow(rt,x)>n) rt--; } return rt-1; }
int main(){ init(); int T,t=1; while (~scanf("%lld",&n)) { ll ans = 0; for (int i = 2 ; i <= 63 ; i ++) { if (quickpow(2,i)>n) break; int cnt = divide(i); if (cnt==-1) continue; if (cnt&1) ans += solve(i); else ans -= solve(i); } printf("%lld\n",ans+1);
int a[120000],b[120000],dpa[2100000],dpb[2100000];
int main() { int T,n,m; scanf("%d",&T); while (T--) { int maxn = 0 ; scanf("%d%d",&n,&m); for (int i = 1 ; i <= n ; i ++) { scanf("%d",&a[i]); maxn = max(maxn,a[i]); } for (int i = 1 ; i <= m ; i ++) { scanf("%d",&b[i]); maxn = max(maxn,b[i]); } for (int i = 0 ; i <=maxn ; i ++) { dpa[i] = 0; dpb[i] = 0; } int ans=0; for (int i = 1 ; i <= n ; i ++) dpa[a[i]] = dpa[ a[i] - 1 ] + 1 ; for (int i = 1 ; i <= m ; i ++) dpb[b[i]] = dpb[ b[i] - 1 ] + 1 ; for (int i = 0 ; i <= maxn ; i ++) ans = max(ans,min(dpa[i],dpb[i])); printf("%d\n",ans); } }
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<map> #include <algorithm> #define mod 1000000007 using namespace std; typedef long long ll; ll ctl[109]={1,1}; void init() { for (int i = 1 ; i <= 36 ; i ++) { ctl[i]=0; for (int j = 0 ; j < i ; j ++) ctl[i]+=ctl[j]*ctl[i-j-1]; }
}
int main() { init(); int n,ca=1; while (~scanf("%d",&n)) { if (n==-1) break; printf("%d %d %I64d\n",ca++,n,2*ctl[n]); } }