做家具的外国网站,删除多余wordpress前端,室内设计效果图接单,做效果图常用的网站有哪些软件题意 求[l,r]的最大指数和#xff08;1l,r10^18#xff09; 最大指数和#xff08;如648^24^32^6,所以64的最大指数和是6#xff09; 题解 很明显我们可以先求出[1,n]的最大指数和#xff0c;然后再作差。 我们可以先求出num[i]代表[1,n]中最大指数为i的数有多少个…题意 求[l,r]的最大指数和1l,r10^18 最大指数和如648^24^32^6,所以64的最大指数和是6 题解 很明显我们可以先求出[1,n]的最大指数和然后再作差。 我们可以先求出num[i]代表[1,n]中最大指数为i的数有多少个。 然后枚举全部的i然后让答案加上i*num[i] 那么怎么求num[i]呢 我们可以求出[1,n]中指数为x的数有多少个作为num[x]的初步值。这个用n1/x就可以求出不过要注意精度问题及其恶心看代码吧 然后这个num却对是不对的。我们发现164^22^4,num[2]中却有16所以我们用num[2]-num[4]就行了。 我们发现对于每一对ij且i%j0num[j]都需要减num[i]不过我们要倒序枚举j。 具体看代码吧。 1 #includeiostream2 #includecmath3 #includecstdio4 #includealgorithm5 #includecstring6 using namespace std;7 const long long INF1e181;8 const long long inf(long long)131; 9 long long dp[100],a,b,n;
10 long long ksm(long long x,long long b){
11 long long tmp1;
12 while(b){
13 if(b1){
14 double num1.0*INF/tmp;
15 if(xnum)return -1;
16 tmptmp*x;
17 }
18 b1;
19 if(xinfb0)return -1;
20 xx*x;
21 }
22 return tmp;
23 }
24 long long calc(long long n,long long x){
25 long long a(long long)(pow((double)(n),1.0/x)1e-9);
26 long long bksm(a,x);
27 if(bn)return a;
28 if(b-1||bn)return a-1;
29 long long cksm(a1,x);
30 if(c!-1cn)return a1;
31 else return a;
32 }
33 long long solve(long long x){
34 if(x0)return 0;
35 if(x1)return 1;
36 long long k;
37 dp[1]x;
38 for(long long i2;i62;i){
39 dp[i]calc(x,i)-1;
40 if(dp[i]0){
41 ki-1;
42 break;
43 }
44 }
45 for(long long ik;i1;i--)
46 for(long long j1;ji;j){
47 if(i%j0)dp[j]-dp[i];
48 }
49 long long ansdp[1];
50 for(long long i2;ik;i){
51 ansdp[i]*i;
52 }
53 return ans;
54 }
55 int main(){
56 while(scanf(%lld%lld,a,b)!EOF){
57 if(a0b0)break;
58 printf(%lld\n,solve(b)-solve(a-1));
59 }
60 return 0;
61 } 转载于:https://www.cnblogs.com/Xu-daxia/p/9715416.html