王梓涵
( 梦幻の幸运使者 qwq)
2023 年8 月 13 日 05:23
1
### 题目描述
k的幂数量
### 输入格式
三个整数 l,r,k
### 输出格式
[l,r]之间k的所有幂
### 样例
#### Input 1
1 10 2
#### Output 1
1 2 4 8
#### Input 2
237171123124584251 923523399718980912 7150
#### Output 2
-1
### 数据范围
1<=l<=r<=1018,2<=k<=109
### 样例解释
样本输入1:
1 10 2
样本输出1: 1 2 4 8
样本输入2:
237171123124584251 923523399718980912 7150
样本输出2: -1
一直tle
2 个赞
张瀚文
(天域_awa)
2023 年8 月 13 日 05:57
2
把循环范围缩到logk l~logk r,直接暴力就行了
2 个赞
王梓涵
( 梦幻の幸运使者 qwq)
2023 年8 月 13 日 06:09
5
#include<bits/stdc++.h>
using namespace std;
long long l,r,k;
bool f=true;
int main(){
cin>>l>>r>>k;
for(long long i=l;i<=r;i++){
long long sum=1;
while(sum<i){
sum*=k;
}
if(sum==i){
f=false;
cout<<i<<' ';
}
}
if(f){
cout<<-1;
}
return 0;
}
2 个赞
张瀚文
(天域_awa)
2023 年8 月 13 日 07:36
8
找出<l并且离l最近的k的幂和<r并且离r最近的k的幂,暴力就行(?
3 个赞
王梓涵
( 梦幻の幸运使者 qwq)
2023 年8 月 13 日 09:10
12
#include<bits/stdc++.h>
using namespace std;
const int N=40000005;
int prime[N],cnt;
bool is_prime[N];
void get_prime(){
for(int i=2;i<=N-5;i++){
if(is_prime[i] == 0){
prime[++cnt] = i;
}
for(int j=1;prime[j] * i<=N-5;j++){
is_prime[prime[j]*i] = 1;
if(i%prime[j] == 0){
break;
}
}
}
return;
}
int n,m,t;
int main(){
cin>>t;
get_prime();
while(t--){
int sum = 0,ans = 0;
cin>>n;
for(int i=1,j=1;i<=cnt && j<=cnt;j++){
if(prime[j] > n){
break;
}
sum+=prime[j];
while(sum>i){
sum=sum+prime[i];
i++;
}
if(sum == n){
ans++;
}
}
cout<<ans<<'\n';
}
return 0;
}
//a=b(modc);
//a=b(modc);
2 个赞