P1062 [NOIP2006 普及组] 数列 原错误代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
int k,n,all[N],ans = 0;
int cl(int x){
int l;
for(int i=0;i<=10;i++){
l+=pow(2,i);
if(l > x){
n-=pow(2,i);
return i;
}
if(l == x){
n-=pow(2,i+1);
return i+1;
}
}
}
int main(){
cin>>k>>n;
int l;
while(n>0){
l = cl(n);
ans += pow(k,l);
}
cout<<ans;
return 0;
}
但是加入输出换行过样例?!
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+10;
int k,n,all[N],ans = 0;
int cl(int x){
int l;
for(int i=0;i<=10;i++){
l+=pow(2,i);
if(l > x){
n-=pow(2,i);
return i;
}
if(l == x){
n-=pow(2,i+1);
return i+1;
}
}
}
int main(){
cin>>k>>n;
int l;
while(n>0){
l = cl(n);
ans += pow(k,l);
cout<<endl; //只加这个就能过样例?
}
cout<<ans;
return 0;
}